Regex-Tester und Debugger
Testen Sie reguläre Ausdrücke mit Echtzeit-Hervorhebung und Erfassungsgruppen.
Hervorgehobene Treffer
Treffer-Details
0 matchesKurzreferenz
.Jedes Zeichen außer Zeilenumbruch
\dZiffer (0-9)
\wWortzeichen (a-z, A-Z, 0-9, _)
\sLeerzeichen (Space, Tab, Zeilenumbruch)
^Anfang der Zeichenkette (oder Zeile mit m-Flag)
$Ende der Zeichenkette (oder Zeile mit m-Flag)
*0 oder mehr des Vorherigen
+1 oder mehr des Vorherigen
?0 oder 1 des Vorherigen
{n,m}Zwischen n und m des Vorherigen
[abc]Zeichenklasse: a, b oder c
[^abc]Nicht a, b oder c
(abc)Capture Group
(?:abc)Nicht-erfassende Gruppe
a|ba oder b
\bWortgrenze
(?=abc)Positiver Lookahead
(?!abc)Negativer Lookahead
Über reguläre Ausdrücke
Reguläre Ausdrücke (regex) sind Muster, die zum Abgleich von Zeichenkombinationen in Zeichenketten verwendet werden. Sie sind ein unverzichtbares Werkzeug in der Programmierung, Textverarbeitung, Datenvalidierung und bei Suchoperationen. Jede große Programmiersprache unterstützt regex · JavaScript, Python, Java, PHP, Ruby, Go und mehr.
Dieser Tester verwendet die in JavaScript eingebaute RegExp-Engine, die die ECMAScript-regex-Syntax einschließlich Lookaheads, Zeichenklassen, Quantoren und der Flags g, i, m und s unterstützt. Treffer werden während der Eingabe in Echtzeit hervorgehoben, und Capture Groups werden im Treffer-Details-Panel angezeigt.
Typische Anwendungen
- E-Mail-Adressen, Telefonnummern und Formulareingaben validieren
- Daten aus Logdateien, CSVs oder HTML extrahieren
- Textmuster in Code-Editoren suchen und ersetzen
- URLs, Dateipfade und strukturierten Text parsen
- Web-Scraping-Selektoren und Suchfilter schreiben
Häufig gestellte Fragen
Was bewirken die Flags g, i, m und s?
g (global) findet alle Treffer statt beim ersten zu stoppen. i (case insensitive) ignoriert Groß- und Kleinschreibung. m (multiline) bewirkt, dass ^ und $ den Anfang/das Ende jeder Zeile matchen. s (dotAll) bewirkt, dass . auch Zeilenumbruchszeichen matcht.
Funktioniert dieses regex in Python / Java / PHP?
Die meiste regex-Syntax ist sprachübergreifend identisch. Es gibt jedoch Unterschiede · zum Beispiel unterstützt JavaScript Lookbehinds nicht in allen Browsern (moderne schon), und Python verwendet eine andere Syntax für benannte Gruppen. Für einfache Muster funktioniert das, was hier klappt, überall.
Werden meine Testdaten irgendwohin gesendet?
Nein. Alle regex-Abgleiche erfolgen lokal in Ihrem Browser mit der nativen RegExp-Engine von JavaScript. Nichts wird an einen Server gesendet.
Was ist ein Regex-Tester?
Ein Regex-Tester ist ein interaktiver Editor, der einen regulaeren Ausdruck gegen eine Beispielzeichenkette laufen laesst und Ihnen genau zeigt, was uebereinstimmte, was nicht, und was die Capture-Gruppen enthalten. Der Tester ermoeglicht es Ihnen, schnell zu iterieren: Tippen Sie das Muster, sehen Sie die Hervorhebungen, passen Sie an, wiederholen Sie. Er ersetzt die langsame Schleife des Bearbeitens von Quellcode, des Ausfuehrens eines Skripts und des Lesens der Konsolenausgabe.
Regulaere Ausdruecke selbst sind eine Mustersyntax, die 1956 von Stephen Cole Kleene erfunden wurde, um Mengen von Zeichenketten zu beschreiben. Moderne Regex-Implementierungen (PCRE, JavaScripts RegExp, Pythons re, .NETs System.Text.RegularExpressions, Javas java.util.regex) teilen den groessten Teil ihrer Syntax, unterscheiden sich aber in Grenzfaellen wie Lookbehinds, benannten Gruppen, Unicode-Behandlung und Quantifizierer-Verhalten.
Dieser Tester verwendet die native JavaScript-RegExp-Engine Ihres Browsers, die ECMAScript 2024 Regex einschliesslich aller Standardflags (g, i, m, s, u, y, d) und der modernen Lookbehinds implementiert. Die Ausgabe ist genau das, was Ihr Frontend-Code zur Laufzeit sehen wird, was den Tester besonders nuetzlich macht beim Debuggen von clientseitiger Validierung, Scraping-Selektoren oder Replace-with-Callback-Transformationen.
Was im Tester steckt
Die obere Reihe enthaelt die Mustereingabe, flankiert von Schraegstrichen, gefolgt von Umschaltflaechen fuer die vier am haeufigsten verwendeten Flags (g, i, m, s). Ein Muster-Knopf oeffnet eine Bibliothek gaengiger Regex-Snippets (E-Mail, URL, Telefon, Datum), die Sie anklicken koennen, um das Musterfeld auszufuellen. Hinter den Kulissen wird die Eingabe entprellt, sodass das erneute Tippen den Matcher nicht stoert.
Unter dem Muster ist der Testzeichenkette-Textbereich, in den Sie den Beispieltext einfuegen. Uebereinstimmungen werden mit einem gelben Hintergrund im Panel Hervorgehobene Uebereinstimmungen markiert, das sich beim Tippen aktualisiert. Das Ersetzen-mit-Feld akzeptiert eine Ersetzungszeichenkette mit Rueckwaertsverweisen ($1, $2 usw.) und zeigt den resultierenden Text live an, perfekt zum Testen von String-Replacement-Transformationen, bevor Sie sie in Ihren Code einfuegen.
Die Uebereinstimmungsdetails-Liste zeigt jede Uebereinstimmung mit ihrem nullbasierten Index in der Quelle, der uebereinstimmenden Teilzeichenkette und jeder Capture-Gruppe. Eine Schnellreferenz-Karte unten fasst die Syntax fuer Zeichenklassen, Quantifizierer, Anker und Lookarounds zusammen, sodass Sie nicht in eine Dokumentations-Tab wechseln muessen fuer die Grundlagen.
Geschichte und Hintergrund
Stephen Cole Kleene definiert regulaere Ereignisse (1956)
Der Mathematiker Stephen Cole Kleene veroeffentlichte 1956 den Aufsatz Representation of Events in Nerve Nets and Finite Automata, in dem er das einfuehrte, was er regulaere Ereignisse nannte: Muster, die Mengen von Zeichenketten beschreiben, die von einem endlichen Automaten akzeptiert werden. Der Kleene-Stern (der *-Operator) traegt seinen Namen. Seine algebraische Notation ist der direkte Vorfahre jeder heute verwendeten Regex-Syntax.
Ken Thompson liefert grep aus (1968)
Ken Thompson bei Bell Labs implementierte 1968 eine Regex-Engine im QED-Editor und erneut in grep (1973), dem Unix-Hilfsprogramm, dessen Name vom QED-Befehl g/regular-expression/p stammt. Thompsons NFA-basierte Engine lief in linearer Zeit pro Zeichen, eine Garantie, die Backtracking-Engines spaeter verloren, als sie Funktionen wie Rueckwaertsverweise hinzufuegten.
Perl 5 fuehrt erweiterte Regex ein (1994)
Larry Wall veroeffentlichte Perl 5 1994 mit einer Regex-Variante, die Lookaheads, Lookbehinds, benannte Captures (spaeter), Inline-Modifikatoren und Rueckwaertsverweise hinzufuegte. Perl 5 Regex wurde so dominant, dass andere Sprachen ihre Syntax kopierten. Philip Hazel schuf PCRE (Perl Compatible Regular Expressions) 1997 als C-Bibliothek, und PCRE treibt heute Regex in PHP, Apache, NGINX und vielen anderen Tools an.
JavaScript liefert RegExp aus (1995, formalisiert 1999)
Brendan Eichs JavaScript 1.0 in 1995 wurde mit einem RegExp-Objekt ausgeliefert, das nach Perl 5 modelliert war. ECMAScript Edition 3 (1999) formalisierte die Syntax. Nachfolgende Editionen fuegten das Unicode-Flag u (ES2015), das Sticky-Flag y (ES2015), benannte Gruppen (ES2018), Lookbehinds (ES2018) und das Indizes-Flag d (ES2022) hinzu. Browser holten mit der Zeit auf, und moderne Engines (V8, SpiderMonkey, JavaScriptCore) implementieren die vollstaendige ES2024-Spezifikation.
ReDoS, Regex Denial of Service (ab 2003)
Forscher bemerkten, dass Backtracking-Regex-Engines auf bestimmten Eingaben exponentielle Zeit benoetigen koennen, eine Klasse von Schwachstellen, die ReDoS (Regular expression Denial of Service) genannt wird. Ein Cloudflare-Ausfall 2019 wurde auf eine Regex mit katastrophalem Backtracking zurueckgefuehrt. Tools wie rxxr und node-re2 entstanden, um das Problem zu erkennen oder zu umgehen, und Engines begannen, Zeitbudgets fuer lang laufende Uebereinstimmungen durchzusetzen.
Unicode-Eigenschaftsausspruenge landen in ECMAScript (2018)
ES2018 fuegte Unicode-Eigenschaftsausspruenge wie \p{Script=Latin} oder \p{Letter} hinzu, mit denen Sie nach Unicode-Kategorie abgleichen koennen, ohne Codepoints aufzuzaehlen. In Kombination mit dem u-Flag kann Regex jetzt Emoji von Buchstaben unterscheiden, Skripte voneinander, und Surrogate-Paare korrekt handhaben. Das macht JavaScript-Regex endlich geeignet fuer internationalen Text-Abgleich, ein Problem, das die aeltere reine ASCII-Syntax nicht loesen konnte.
Praktische Workflows
E-Mail-Validierung
Werfen Sie eine Probe gueltiger und ungueltiger E-Mails in den Testbereich, tippen Sie Ihre Kandidaten-Regex (ein gaengiger Startpunkt ist ^[^@\s]+@[^@\s]+\.[^@\s]+$) und passen Sie an, bis gueltige E-Mails hervorgehoben werden und ungueltige nicht. Beachten Sie, dass die vollstaendige RFC 5321-E-Mail-Spezifikation so komplex ist, dass die perfekte E-Mail-Regex Hunderte von Zeichen lang ist. Eine pragmatische Regex faengt Tippfehler ab; die endgueltige Validierung sollte ueber echtes SMTP hin und her gehen.
URL-Parsing und -Extraktion
Fuegen Sie eine Seite HTML oder reinen Text ein und schreiben Sie eine Regex, um URLs zu extrahieren. Ein Startmuster wie https?:\/\/\S+ faengt die meisten Faelle ab. Fuer Produktionscode bevorzugen Sie den URL-Konstruktor (new URL(string)), der jeden Grenzfall behandelt; Regex ist am besten fuer schnelle einmalige Extraktionen oder Log-Analysen.
Log-Datei-Scraping
Apache- und NGINX-Logs folgen einem festen Format. Fuegen Sie ein paar Logzeilen ein, schreiben Sie eine Regex mit benannten Captures ((?
Suchen und Ersetzen in Code-Editoren
VSCode, Sublime Text, JetBrains-IDEs und vim akzeptieren alle Regex in ihren Suchen-Ersetzen-Dialogen. Iterieren Sie zuerst hier auf dem Muster, mit dem Live-Markierer, der genau zeigt, was uebereinstimmt, fuegen Sie dann die Regex in den Dialog des Editors ein. Sparen Sie sich den Schmerz von Fehlschlaegen in einer 5.000-zeiligen Codebase.
Web-Scraping von CSS-Klassennamen
Wenn Sie Daten aus HTML ohne Parser extrahieren muessen (ein einmaliges Skript, keine Produktion), zieht eine Regex wie class="([^"]+)" Klassenattribute heraus. Fuer alles ueber eine schnelle Erkundung hinaus, wechseln Sie zu einer richtigen DOM-Bibliothek; HTML ist keine regulaere Sprache und Regex verfehlt Grenzfaelle.
Validieren semantischer Versionszeichenketten
Semver folgt ^\d+\.\d+\.\d+(-[\w.]+)?(\+[\w.]+)?$. Werfen Sie eine Liste von Versionen (1.0.0, 1.2.3-beta.1+build.456) in den Testbereich, um zu pruefen, ob die Regex Pre-Release- und Build-Metadaten korrekt abfaengt. Das ist nuetzlich beim Validieren von Abhaengigkeiten in CI-Skripten.
Haeufige Fallstricke
Gierige vs faule Quantifizierer
Standardmaessig sind *, + und ? gierig: Sie passen so viel wie moeglich an, dann gehen sie zurueck, wenn der Rest der Regex fehlschlaegt. Die faulen Versionen *?, +?, ?? passen so wenig wie moeglich an. Das klassische Beispiel ist <.*> auf text, das mit der gesamten Zeichenkette uebereinstimmt, waehrend <.*?> nur und separat abgleicht. Waehlen Sie das richtige, um Ueberlauf-Ueberraschungen zu vermeiden.
Katastrophales Backtracking (ReDoS)
Verschachtelte Quantifizierer wie (a+)+ oder (.*)* auf einer langen nicht-uebereinstimmenden Eingabe koennen exponentielle Zeit dauern, waehrend die Engine jede Kombination versucht. Der Browser-Tab kann einfrieren oder abstuerzen. Vermeiden Sie sich ueberlappende Quantifizierergruppen, bevorzugen Sie atomare Gruppen (?>...) wo unterstuetzt, oder vorvalidieren Sie die Eingabelaenge. Die npm-Bibliothek safe-regex markiert riskante Muster automatisch.
Sonderzeichen brauchen Escape
Zeichen mit besonderer Bedeutung in Regex (. * + ? ^ $ ( ) [ ] { } | \) muessen mit einem Backslash escaped werden, um wortwoertlich uebereinzustimmen. So entspricht \. einem Punkt, waehrend . jedem Zeichen entspricht. Das Vergessen des Escapens ist die haeufigste Ursache fuer falsch positive Ergebnisse beim Validieren von IPs, Dateierweiterungen oder Versionsnummern mit Punkten.
Anker und Multilinien-Flag
Ohne das m-Flag entsprechen ^ und $ nur dem Anfang und Ende der gesamten Zeichenkette. Mit m entsprechen sie dem Anfang und Ende jeder Zeile. Wenn Ihre Regex bei einzelnen Zeilen funktioniert, aber bei mehrzeiliger Eingabe fehlschlaegt, schalten Sie m um. Umgekehrt, wenn sie zu viel bei mehrzeiliger Eingabe matcht, entfernen Sie m.
Engine-uebergreifende Syntaxunterschiede
Dieser Tester verwendet JavaScript-Regex. Pythons re verwendet (?P
Unicode ohne das u-Flag
Ohne das u-Flag behandelt JavaScript-Regex Surrogate-Paare (Emoji, CJK-Ergaenzung) als zwei getrennte Codeeinheiten. \u{1F600} (laechelndes Gesicht-Emoji) funktioniert nicht ohne u. Mit dem u-Flag wird die Regex Unicode-bewusst, Eigenschafts-Escapes wie \p{Letter} werden verfuegbar, und die Surrogate-Paar-Behandlung ist korrekt. Setzen Sie immer u, wenn Sie internationalen Text abgleichen.
Datenschutz und Datenverarbeitung
Jede Regex wird vom RegExp-Motor Ihres Browsers kompiliert und ausgefuehrt. Wir senden Ihr Muster, Ihre Testzeichenkette oder Ihre Ersetzungsvorlage nicht an einen Server. Der Matcher laeuft lokal, die Hervorhebungen werden lokal gerendert, und die Uebereinstimmungsdetail-Liste wird lokal berechnet. Es gibt keine Analysen, die mit dem Inhalt Ihrer Eingaben verbunden sind.
Sobald die Seite geladen ist, funktioniert der Tester offline. Sie koennen sich vom Netzwerk trennen, sensible Logzeilen oder PII einfuegen und Muster gegen sie laufen lassen, ohne dass Daten Ihr Geraet verlassen. Das macht das Tool sicher fuer das Testen von Regex gegen Produktionsdaten, ohne sie ueber einen Drittanbieterdienst zu senden.
Wann eine Regex nicht zu verwenden ist
Parsen von HTML oder XML
HTML ist keine regulaere Sprache. Sie koennen verschachtelte Tags nicht zuverlaessig mit Regex parsen; die beruehmte Stack-Overflow-Antwort ueber Zalgo und Cthulhu macht diesen Punkt anschaulich. Verwenden Sie stattdessen DOMParser oder eine Bibliothek wie cheerio (Node.js) oder BeautifulSoup (Python). Regex ist in Ordnung fuer einmalige Extraktionen, aber bricht bei Grenzfaellen wie selbstschliessenden Tags, Kommentaren, CDATA und fehlerhafter Eingabe.
Alles wirklich Rekursive (JSON, Quellcode, mathematische Ausdruecke)
Ausgewogene Klammern, ausgewogene Klammern, verschachtelte Funktionsaufrufe, arithmetische Praezedenz, alle erfordern eine kontextfreie Grammatik, nicht eine regulaere. Verwenden Sie einen Parser-Kombinator (Parsimmon, nom) oder einen Generator (pegjs, antlr). Regex kann oeffnende oder schliessende Tokens abgleichen, aber kann die Balance nicht verfolgen.
Wenn eine einfache Stringoperation ausreicht
Wenn Sie pruefen muessen, ob ein String mit prefix- beginnt, verwenden Sie str.startsWith("prefix-"), nicht /^prefix-/. String-Methoden sind schneller, klarer und unmoeglich mit Quantifizierern falsch zu machen. Reservieren Sie Regex fuer Muster, die String-Methoden nicht ausdruecken koennen.
Komplexe Schema-Validierung
Zu validieren, dass ein JSON-Dokument eine bestimmte Form hat (Pflichtfelder, verschachtelte Typen, Wertebereiche), wird viel besser mit einem JSON-Schema-Validator (ajv, zod, joi) erledigt als mit einer Regex. Regex kann Format pruefen, aber nicht Struktur, und eine Regex, die versucht, ein JSON-Dokument zu validieren, ist ein Wartungs-Albtraum.
Weitere Fragen
Wann sollte ich Lookahead vs Lookbehind verwenden?
Lookahead (?=...) behauptet, dass das, was folgt, uebereinstimmt, ohne es zu konsumieren; Lookbehind (?<=...) macht dasselbe fuer das, was vorausgeht. Verwenden Sie Lookahead, wenn der nachfolgende Kontext bestimmt, ob abgeglichen werden soll, Lookbehind, wenn der vorausgehende Kontext es tut. JavaScript unterstuetzt beide seit 2018 (ES2018), und alle modernen Browser tun es. Aeltere Safari-Versionen vor 16.4 hatten keine Lookbehind-Unterstuetzung.
Wird Lookbehind in allen Browsern unterstuetzt?
Lookbehind (positiv und negativ) wird in Chrome seit Version 62 (2017), Firefox seit 78 (2020), Edge seit 79 (2020) und Safari seit 16.4 (2023) unterstuetzt. Wenn Ihr Publikum aelteres Safari verwenden koennte, vermeiden Sie Lookbehind oder polyfillen Sie mit einem alternativen Muster. Fuer Node.js wird Lookbehind seit 10.0 unterstuetzt.
Was macht das Unicode-(u)-Flag?
Das u-Flag aktiviert den Unicode-Modus: Surrogate-Paare werden als ein einzelnes Zeichen behandelt, \u{...}-Escapes funktionieren, und \p{...}-Eigenschaftsausspruenge werden verfuegbar. Ohne u zaehlt ein Emoji wie das laechelnde Gesicht als zwei Codeeinheiten und . stimmt nur mit der ersten Haelfte ueberein. Setzen Sie immer u, wenn Sie mit Text jenseits von ASCII arbeiten.
Wie schnell ist der Regex-Motor?
Der RegExp-Motor von V8 verwendet eine Irregexp-Implementierung, die zu nativem Code kompiliert. Bei einfachen Mustern matcht er Millionen Zeichen pro Sekunde. Pathologische Muster (verschachtelte Quantifizierer auf adversarialer Eingabe) koennen auf exponentielle Zeit explodieren, weshalb ReDoS ein echter Angriffsvektor ist. Moderne Engines wenden Heuristiken an, um ausser Kontrolle geratene Uebereinstimmungen zu erkennen und abzubrechen, aber Sie sollten trotzdem riskante Muster vermeiden.
Wie unterscheiden sich JavaScript- und Python-Regex?
Benannte Gruppen verwenden unterschiedliche Syntax (?
Kann ich stattdessen KI verwenden, um Regex zu generieren?
LLMs sind gut darin, anfaengliche Regex-Muster vorzuschlagen, produzieren aber routinemaessig subtil falsche Ausgaben (gierig, wo faul benoetigt wurde, fehlende Escapes, falsche Flags). Verwenden Sie KI fuer erste Entwuerfe und validieren Sie dann, indem Sie die Regex gegen echte Beispiele in diesem Tester laufen lassen. Iterieren Sie, bis die Hervorhebungen genau dem entsprechen, was Sie erwarten. Die interaktive Rueckkopplungsschleife faengt LLM-Fehler ab, bevor sie in die Produktion gehen.
Verwandte Werkzeuge
Kostenloser Online-JSON-Formatierer & -Validator
Fügen Sie Ihr JSON ein, um es sofort zu formatieren, zu minimieren oder zu validieren. Die gesamte Verarbeitung findet in Ihrem Browser statt.
Kostenloser Online-Base64-Encoder & -Decoder
Kodieren Sie Text zu Base64 oder dekodieren Sie Base64 zu Text sofort. Unterstützt Datei-zu-Base64-Konvertierung. Kostenlos, keine Anmeldung, läuft in Ihrem Browser.
Groß-/Kleinschreibungskonverter
Konvertieren Sie Text zwischen UPPER, lower, Title, camelCase, snake_case und mehr.