Skip to content

Regex-Tester

Testen und debuggen Sie JavaScript-Regex mit Live-Hervorhebung, Capture-Gruppen und schrittweiser Erklärung.

Regex-Tester

Aktualisiert beim Tippen
Muster
Regulärer Ausdruck ? /…/
/
/ g
Flags g
Presets ?
Testeingabe
Teststring ?
Ausgabe
Hervorgehoben

        
Trefferliste

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.

  1. Kompilieren. Die Engine parst Ihr Muster zu einer internen Zustandsmaschine. Syntaxfehler tauchen hier auf — das ist die „Ungültiges Regex"-Box.
  2. Scannen. Die Engine läuft den Teststring von links nach rechts durch und probiert das Muster an jeder Position.
  3. Treffen oder zurückverfolgen. Wenn ein Token scheitert, wird zurückverfolgt und ein anderer Zweig probiert (Alternativen |, gierige vs. faule Quantoren, optionale Gruppen).
  4. Sammeln. Mit dem Flag g geht es nach jedem Treffer weiter; ohne g stoppt 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ätzlich y (sticky) und d (hasIndices). PCRE ergänzt x (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 Flag u.

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 Flag m, 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.lastIndex ist zustandsbehaftet. Wenn Sie in JS über Treffer iterieren, nutzen Sie entweder String.matchAll() oder setzen Sie lastIndex zurück.

Rechenbeispiele

E-Mail (vereinfacht)/(\w+)@(\w+\.\w+)/g

Trifft 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.

ISO-Datum/\b(\d{4})-(\d{2})-(\d{2})\b/g

Drei 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.

IPv4/\b(?:\d{1,3}\.){3}\d{1,3}\b/g

Eine 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?.

Extrahieren und umformatieren/(\d{4})-(\d{2})-(\d{2})/ → $3/$2/$1

Im Ersetzen-Tab verwandelt das jedes 2024-07-04 in 04/07/2024. $1, $2, $3 sind Rückverweise auf die Capture-Gruppen.

HTML-Tags entfernen/<[^>]+>/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.