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

Ohne umschließende Schrägstriche eingeben, z. B. \d+ statt /\d+/. Das Muster steht im Link und lässt sich teilen – der Testtext nicht.
Deine Eingaben werden nur in diesem Browser gespeichert.

Der Text, in dem gesucht wird. Er bleibt in Ihrem Browser und steht nicht im Link.

Ihr Text bleibt in Ihrem Browser – er wird nicht gesendet, nicht gespeichert und nicht in die Adresszeile geschrieben.

Ergebnis

Ergebnis
2 Treffer
Treffer
Nr.PositionLängeTreffer
119102026-09-27
247102026-10-15
Gruppen je Treffer
Nr.GruppeNameInhalt
11jahr2026
12monat09
13tag27
21jahr2026
22monat10
23tag15
Das Muster erklärt
BausteinBedeutung
(?<jahr>Beginn von Gruppe 1 mit dem Namen „jahr“
› \deine Ziffer 0–9
› {4}das Vorherige genau 4-mal
)Ende der Gruppe
-der Text „-“ wörtlich
(?<monat>Beginn von Gruppe 2 mit dem Namen „monat“
› \deine Ziffer 0–9
› {2}das Vorherige genau 2-mal
)Ende der Gruppe
-der Text „-“ wörtlich
(?<tag>Beginn von Gruppe 3 mit dem Namen „tag“
› \deine Ziffer 0–9
› {2}das Vorherige genau 2-mal
)Ende der Gruppe
Als JavaScript-Literal
/(?<jahr>\d{4})-(?<monat>\d{2})-(?<tag>\d{2})/g

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

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

Stand:

Passende Werkzeuge