Regex-Tester
Regex online testen: JavaScript-Ausdrücke live prüfen, mit hervorgehobenen Treffern, Erfassungsgruppen, Ersetzen und Erklärung jedes Bestandteils.
| # | Position | Treffer | Gruppen |
|---|
Erklärung des Musters
Achtung: Eine wiederholte Gruppe enthält einen weiteren offenen Quantifizierer, zum Beispiel (a+)+. Solche Muster können bei fast passendem Text exponentiell lange brauchen (katastrophales Backtracking).
So nutzen Sie den Regex-Tester
- Geben Sie Ihr Muster in das Feld „Regulärer Ausdruck“ ein, ohne die umschließenden Schrägstriche. Schrägstriche und aktive Flags werden rund um das Feld angezeigt, etwa
/muster/g. - Aktivieren Sie die benötigten „Flags“:
g(global),i(Groß-/Kleinschreibung ignorieren),m(mehrzeilig),s(dotAll),u(Unicode) odery(sticky). - Fügen Sie den zu durchsuchenden Text in „Testtext“ ein. Treffer werden während der Eingabe hervorgehoben, und die Tabelle listet jeden Treffer mit Position und Erfassungsgruppen auf.
- Um eine Ersetzung auszuprobieren, füllen Sie „Ersetzung“ aus. Das Feld „Ergebnis nach dem Ersetzen“ zeigt den Text, in dem jeder Treffer ersetzt wurde – bereit zum Kopieren.
- Lesen Sie die „Erklärung des Musters“, um zu prüfen, was jeder Teil Ihrer Regex bewirkt. Sie wissen nicht, wo Sie anfangen sollen? Klicken Sie auf „Beispiel laden“.
Was der Tester anzeigt
- Hervorgehobene Treffer: Jeder Treffer im Testtext wird markiert, sodass Sie auf einen Blick sehen, was erfasst wird und was nicht.
- Treffertabelle: die Nummer jedes Treffers, seine Position (Zeichenabstand vom Anfang, gezählt ab 0), der gefundene Text und der Wert jeder Erfassungsgruppe. Benannte Gruppen wie
(?<year>\d{4})erscheinen unter ihrem Namen, Gruppen, die am Treffer nicht beteiligt waren, als „(nicht erfasst)“. Die ersten 1.000 Treffer werden aufgelistet. - Ersetzung: Der Ersetzungstext folgt der JavaScript-Syntax:
$1oder$2für nummerierte Gruppen,$<name>für benannte Gruppen,$&für den gesamten Treffer und$$für ein wörtliches Dollarzeichen. Ohne das Flaggwird nur der erste Treffer ersetzt. - Erklärung: Das Muster wird in Bestandteile zerlegt (wörtlicher Text, Zeichenklassen, Anker, Gruppen, Quantifizierer, Lookarounds, Rückverweise), jeweils mit einer kurzen Beschreibung. Verschachtelte Gruppen werden eingerückt – so lassen sich auch lange Muster viel leichter prüfen.
Die Flags im Überblick
| Flag | Wirkung |
|---|---|
g |
Findet alle Treffer, statt beim ersten aufzuhören |
i |
Ignoriert den Unterschied zwischen Groß- und Kleinschreibung |
m |
^ und $ passen am Anfang und Ende jeder Zeile |
s |
. passt auch auf Zeilenumbrüche |
u |
Voller Unicode-Modus: \u{…}, \p{…} und Emojis werden als einzelne Zeichen behandelt |
y |
Sticky: Jeder Treffer muss genau dort beginnen, wo der vorige endete |
Katastrophales Backtracking
Manche Muster brauchen bei Text, der fast passt, exponentiell viel Zeit. Das klassische Beispiel ist (a+)+$, getestet mit einer langen Folge von a und einem b am Ende: Die Engine probiert jede Möglichkeit aus, die a auf die beiden Quantifizierer zu verteilen, bevor sie aufgibt. Dieses als ReDoS bekannte Problem hat schon echte Websites lahmgelegt.
Das Tool schützt Ihren Browser auf drei Arten: Die Suche läuft in einem Hintergrund-Worker, der nach 1,5 Sekunden gestoppt wird; der Testtext ist auf 100.000 Zeichen begrenzt; und die Erklärung warnt Sie, wenn eine wiederholte Gruppe einen weiteren offenen Quantifizierer enthält. Läuft ein Muster in den Timeout, schreiben Sie es so um, dass jedes Zeichen nur auf eine Weise erfasst werden kann, zum Beispiel a+$ statt (a+)+$.
Häufige Fragen
Welche Regex-Variante verwendet das Tool?
Die JavaScript-Engine (ECMAScript) Ihres Browsers – genau so, wie new RegExp() und String.prototype.replace() in Ihrem Code arbeiten würden. Der Großteil der Syntax ist mit PCRE, Python und Java identisch, einiges unterscheidet sich aber: Possessive Quantifizierer und atomare Gruppen gibt es in JavaScript nicht, Lookbehind wird dagegen in allen aktuellen Browsern unterstützt.
Warum findet mein Muster nur einen Treffer?
Das Flag g ist ausgeschaltet. Ohne dieses Flag hört JavaScript nach dem ersten Treffer auf, und auch die Ersetzung ändert nur diesen einen.
Wie finde ich einen wörtlichen Punkt, eine Klammer oder ein Fragezeichen?
Maskieren Sie das Zeichen mit einem Backslash: \., \[, \?. Die Erklärung kennzeichnet solche Zeichen mit „(maskiert)“, sodass Sie es überprüfen können.
Wird mein Text irgendwohin gesendet?
Nein. Muster und Text werden ausschließlich in Ihrem Browser verarbeitet. Sie können das Tool also bedenkenlos für Logdateien oder Daten mit personenbezogenen Informationen verwenden.
Warum weicht die Position von der Spalte in meinem Editor ab?
Positionen zählen Zeichen ab 0 über alle Zeilen hinweg, so wie match.index in JavaScript. Ein Zeilenumbruch zählt als ein Zeichen, ein Emoji außerhalb der Basic Multilingual Plane als zwei.
Ähnliche Tools
- JSON-Formatierer und -Validator Kostenloser JSON-Formatierer und Validator: JSON im Browser formatieren, minifizieren und prüfen – Syntaxfehler mit Zeile und Spalte.
- URL-Encoder und -Decoder Kostenloser URL-Encoder und -Decoder: Query-Parameter oder ganze URLs prozentkodieren, %XX-Sequenzen dekodieren und + als Leerzeichen behandeln – im Browser.
- Hash-Generator MD5-, SHA-1-, SHA-256- und SHA-512-Hashes von Text oder Dateien beliebiger Größe erzeugen und Prüfsummen vergleichen – alles lokal im Browser.