Regex-Tester
Muster eingeben, Flags wählen, Testtext einfügen: Der Regex-Tester zeigt alle Treffer mit Position, die Inhalte nummerierter und benannter Gruppen und erklärt jeden Baustein des Musters in Klartext. Geprüft wird mit der JavaScript-Engine Ihres Browsers (ECMAScript).
So wird gerechnet
Der Regex-Tester arbeitet mit dem JavaScript-Dialekt regulärer Ausdrücke, wie ihn die Norm ECMA-262 festlegt und Ihr Browser umsetzt. Ein Muster, das hier funktioniert, funktioniert genauso in String.prototype.match, matchAll, replace und RegExp.prototype.test – in Chrome, Firefox, Safari und Node.js.
So lesen Sie das Ergebnis
- Treffer: jede Fundstelle mit Position (Zeichenindex ab 0, gezählt wie in JavaScript in UTF-16-Einheiten – ein Emoji zählt 2) und Länge. Zeilenumbrüche erscheinen als ↵, Tabs als ⇥.
- Gruppen je Treffer: was jede runde Klammer gefunden hat – nummerierte Gruppen
( )und benannte Gruppen(?<name> ). „nicht beteiligt“ heißt: Die Gruppe lag in einer Alternative, die nicht genommen wurde. Mit Flagdsteht zusätzlich die Position jeder Gruppe dabei. - Das Muster erklärt: jeder Baustein in Klartext; eingerückte Zeilen (›) liegen innerhalb einer Gruppe.
Die Flags
g sucht alle Treffer statt nur des ersten, i ignoriert Groß- und Kleinschreibung, m lässt ^ und $ an jeder Zeile greifen, s lässt den Punkt auch Zeilenumbrüche finden. u behandelt Emoji und andere Zeichen außerhalb der Basisebene als ein Zeichen und erlaubt Unicode-Eigenschaften wie \p{L} (alle Buchstaben, auch Umlaute). v ist die modernere Form von u mit Mengenoperationen wie [\p{L}--[a-z]]; u und v schließen sich aus. y („sticky“) findet nur Treffer, die lückenlos aneinanderschließen.
Schutz vor Endlosschleifen und Hängern
Muster wie a* oder \b können leere Treffer liefern. Der Tester springt danach – genau wie JavaScript selbst – ein Zeichen weiter (mit u/v einen ganzen Codepunkt), damit keine Endlosschleife entsteht. Gesucht werden höchstens 1.000 Treffer.
Gefährlicher ist katastrophales Backtracking (ReDoS): Verschachtelte Quantoren wie (a+)+$ probieren bei einem Text ohne Treffer exponentiell viele Kombinationen – schon 30 Zeichen können die Engine minutenlang beschäftigen. Deshalb läuft die Suche in einem eigenen Hintergrund-Thread und wird nach 2 Sekunden abgebrochen; die Seite bleibt bedienbar. Solche Muster sollten Sie auch im eigenen Code vermeiden, besonders bei Eingaben von Nutzern.
Unterschiede zu anderen Regex-Dialekten
PCRE (PHP), Python, Java und .NET weichen in Details ab: JavaScript kennt zum Beispiel keine possessiven Quantoren (a++), keine atomaren Gruppen und keine Anker \A und \Z; \w umfasst nur A–Z, a–z, 0–9 und den Unterstrich – für Umlaute nehmen Sie \p{L} mit Flag u.
Ihr Testtext wird nicht gesendet, nicht gespeichert und nicht in den Link geschrieben – nur das Muster und die Flags.
Häufige Fragen
Wie teste ich einen regulären Ausdruck?
Muster ohne Schrägstriche in das obere Feld schreiben, gewünschte Flags anhaken und den Text einfügen. Alle Treffer werden sofort im Text markiert und mit Position aufgelistet; darunter steht, was jede Gruppe gefunden hat.
Warum findet \w keine Umlaute?
In JavaScript steht \w nur für A–Z, a–z, 0–9 und _. Für Buchstaben aller Sprachen verwenden Sie \p{L} mit gesetztem Flag u, z. B. [\p{L}\d_]+ für ein Wort mit Umlauten.
Was ist der Unterschied zwischen gierig und genügsam?
Gierige Quantoren (*, +, {2,}) nehmen so viel Text wie möglich, genügsame mit angehängtem Fragezeichen (*?, +?) so wenig wie möglich. Bei <.+> auf „<b>x</b>“ trifft die gierige Form den ganzen Text, <.+?> nur „<b>“.
Wie benenne ich eine Gruppe?
Mit (?<name>…). Im Code lesen Sie den Inhalt dann über treffer.groups.name, im Ersetzungstext mit $<name>, im Muster selbst per Rückverweis \k<name>.
Warum wurde meine Suche abgebrochen?
Die Suche dauerte über 2 Sekunden – meist durch katastrophales Backtracking bei verschachtelten Quantoren wie (\w+)*. Vereinfachen Sie das Muster: Quantoren nicht verschachteln, Alternativen eindeutig formulieren und mit Ankern (^, $) eingrenzen.
Gilt das Ergebnis auch für PHP oder Python?
Für einfache Muster meistens ja, garantiert aber nur für JavaScript. PHP (PCRE) und Python kennen zusätzliche Syntax wie possessive Quantoren oder \A, Python schreibt benannte Gruppen als (?P<name>…).
Quellen und Rechtsgrundlagen
- ECMA-262 § 22.2: ECMA-262 – ECMAScript Language Specification, RegExp (Regular Expression) Objects
- MDN Web Docs – Regular expressions (Guide)
- MDN Web Docs – RegExp.prototype.flags
- MDN Web Docs – String.prototype.matchAll() (empty matches, lastIndex)
- OWASP – Regular expression Denial of Service (ReDoS)
Stand:
Passende Werkzeuge
- JSON formatieren, validieren und minifizierenJSON online prüfen nach RFC 8259: Fehler mit Zeile, Spalte und klarer Erklärung, schön formatieren oder minifizieren, Schlüssel sortieren. Lokal im Browser.
- XML und CSV online prüfenXML auf Wohlgeformtheit prüfen, CSV nach RFC 4180 validieren: Fehler mit Zeile und Spalte, Trennzeichen automatisch erkennen, Tabellenvorschau. Lokal.
- Base64 kodieren und dekodierenBase64 und Base64url kodieren/dekodieren mit korrektem UTF-8, dazu URL-Encode/Decode (Prozent-Kodierung). Mit Fehlerprüfung, lokal im Browser.
- Hash-Generator: SHA-256, SHA-512, SHA-1, MD5SHA-256, SHA-384, SHA-512, SHA-1 und MD5 von Text oder Datei berechnen und Prüfsummen vergleichen – lokal im Browser, ohne Upload, kostenlos.
- E-Mail-Adressen auf gültige Schreibweise prüfenE-Mail-Adressen einzeln oder als Liste auf korrekte Syntax nach RFC 5321/5322 prüfen: Längen, Domain, Umlaut-Domains (Punycode). Lokal, ohne Versand.
- Meine BildschirmauflösungZeigt sofort Ihre Bildschirmauflösung, echte Pixel, Browserfenster (Viewport), devicePixelRatio, Seitenverhältnis und Breakpoint. Live, direkt im Browser.