Regex-Tester
Testen und debuggen Sie JavaScript-Regex mit Live-Hervorhebung, Capture-Gruppen und schrittweiser Erklärung.
Regex-Tester
Aktualisiert beim Tippen(…), um ihn einzufangen, oder nutzen Sie (?<name>…) für eine benannte Gruppe.Wie reguläre Ausdrücke funktionieren
Ein regulärer Ausdruck ist eine kleine Mustersprache zum Beschreiben von Text. Dieses Tool nutzt die JavaScript-Engine (in Ihren Browser integriert), also verhält sich jedes Muster, das Sie hier tippen, exakt wie new RegExp(…) in einer .js-Datei.
- Kompilieren. Die Engine parst Ihr Muster zu einer internen Zustandsmaschine. Syntaxfehler tauchen hier auf — das ist die „Ungültiges Regex"-Box.
- Scannen. Die Engine läuft den Teststring von links nach rechts durch und probiert das Muster an jeder Position.
- Treffen oder zurückverfolgen. Wenn ein Token scheitert, wird zurückverfolgt und ein anderer Zweig probiert (Alternativen
|, gierige vs. faule Quantoren, optionale Gruppen). - Sammeln. Mit dem Flag
ggeht es nach jedem Treffer weiter; ohnegstoppt es beim ersten Treffer.
JavaScript vs. PCRE (PHP / Python)
Wenn Sie Regex in anderen Sprachen geschrieben haben, unterscheiden sich einige Dinge:
- Flag-Buchstaben sind ähnlich:
g i m s u. JS hat zusätzlichy(sticky) undd(hasIndices). PCRE ergänztx(extended), was JavaScript nicht unterstützt. - Lookbehinds
(?<=…)und(?<!…)funktionieren in modernen JS-Engines, sind aber in älteren nur mit fester Breite zulässig. - Possessive Quantoren
a++,a*+und atomare Gruppen(?>…)gibt es in JavaScript nicht. - Rekursion
(?R)und Subroutinenaufrufe(?1)sind PCRE-exklusiv. - Unicode-Property-Escapes
\p{Letter}benötigen in JS das Flagu.
Häufige Stolperfallen
- Standardmäßig gierig.
.*greift so viel wie möglich. Für den kürzesten Treffer nutzen Sie das faule.*?. - Katastrophales Backtracking. Verschachtelte Quantoren wie
(a+)+$können den Browser bei pathologischen Eingaben einfrieren. Bevorzuge possessiv-artige Muster, die schnell scheitern — z. B.\w+@\w+statt(\w+)+@\w+. - Anker brauchen das richtige Flag.
^und$treffen standardmäßig Anfang/Ende des gesamten Strings. Ergänzen Sie das Flagm, damit sie pro Zeile treffen. - Der Punkt stoppt an Zeilenumbrüchen. Nutzen Sie das Flag
s, wenn.Zeilenumbrüche überqueren soll. - Innerhalb von Zeichenklassen escapen. Innerhalb von
[…]sind die einzigen Metazeichen] \ ^ -. Alles andere ist literal — Sie müssen.oder*nicht escapen. - Global + exec() in echtem Code:
RegExp.lastIndexist zustandsbehaftet. Wenn Sie in JS über Treffer iterieren, nutzen Sie entwederString.matchAll()oder setzen SielastIndexzurück.
Rechenbeispiele
/(\w+)@(\w+\.\w+)/gTrifft einen Wortzeichen-Block, ein @, dann Wort.Punkt.Wort. Zwei Capture-Gruppen erlauben Ihnen, den lokalen Teil und die Domain zu extrahieren. Echte E-Mails sind komplexer — die RFC-5322-Grammatik ist weit hässlicher — aber das reicht für Log-Scraping und Formular-Validierungshinweise.
/\b(\d{4})-(\d{2})-(\d{2})\b/gDrei Ziffergruppen fester Breite, getrennt durch Bindestriche, eingerahmt von Wortgrenzen, damit es nicht in der Mitte eines Strings trifft. Für strenge Validierung würden Sie Monate zusätzlich auf 0[1-9]|1[0-2] begrenzen.
/\b(?:\d{1,3}\.){3}\d{1,3}\b/gEine nicht-einfangende Gruppe (?:…), dreimal wiederholt, plus ein letztes Oktett. Das trifft nur die Form — 999.999.999.999 wird ebenfalls akzeptiert. Für strenge Validierung wird jedes Oktett zu 25[0-5]|2[0-4]\d|[01]?\d\d?.
/(\d{4})-(\d{2})-(\d{2})/ → $3/$2/$1Im Ersetzen-Tab verwandelt das jedes 2024-07-04 in 04/07/2024. $1, $2, $3 sind Rückverweise auf die Capture-Gruppen.
/<[^>]+>/g[^>]+ bedeutet „ein oder mehr Nicht->-Zeichen". Schneller und sicherer als ein gieriges .*, weil die Zeichenklasse nicht über Tag-Grenzen zurückverfolgen kann. Trotzdem kein echter HTML-Parser — nutzen Sie für ernsthafte Aufgaben einen DOM-Parser.
Wann nicht Regex verwenden
- HTML, XML, JSON. Nutzen Sie einen Parser. Regex kann verschachtelte Strukturen nicht ausbalancieren.
- E-Mail-RFC-Konformität. Die vollständige Grammatik ist ~6 KB groß. Nutzen Sie eine dedizierte Bibliothek oder eine einfache „enthält @ und einen Punkt danach"-Prüfung plus Bestätigungs-E-Mail.
- Daten mit Kalenderregeln. Regex kann die Form treffen, nicht aber Schaltjahre.
- Verarbeitung natürlicher Sprache. Fast immer das falsche Werkzeug — greifen Sie zu einem Tokenizer oder einem LLM.