Was ist dieses Tool?
Ein regulärer Ausdruck (Regex) ist eine kompakte Mustersprache zum Suchen, Überprüfen und Extrahieren von Text: Ein E-Mail-Muster kann Formulareingaben überprüfen, \d{4}-\d{2}-\d{2} findet Datumsangaben, und Erfassungsgruppen extrahieren die benötigten Teile. Nahezu jede Programmiersprache und jeder Editor unterstützt reguläre Ausdrücke.
Dieser Tester nutzt die JavaScript-Regex-Engine – dieselbe, die auch in Node.js und jedem Browser zum Einsatz kommt –, sodass sich die Muster, die Sie hier erstellen, in Ihrem JavaScript-/TypeScript-Code identisch verhalten. Die meisten Muster funktionieren zudem unverändert in Python, Java und Go.
Warum sollte man es nutzen?
- Echtzeit-Feedback: Übereinstimmungen werden während der Eingabe des Musters gelb hervorgehoben.
- Pro Übereinstimmung angezeigte Erfassungsgruppen – sehen Sie genau, was die Gruppen „$1“ und „$2“ enthalten werden.
- Vollständige Unterstützung von Optionen: g (alle Übereinstimmungen), i (Groß-/Kleinschreibung ignorieren), m (mehrzeilig), s (Punkt entspricht Zeilenumbruch), u (Unicode).
- Zeigt Fehlermeldungen an, wenn das Muster einen Syntaxfehler enthält.
- Kostenlos und vertraulich – Muster und Text verlassen Ihren Browser zu keinem Zeitpunkt.
Anleitung
- Geben Sie Ihr Muster zwischen den beiden /-Zeichen ein (Sie müssen die Schrägstriche nicht selbst mit Escape-Zeichen versehen).
- Passen Sie die Optionen im kleinen Feld nach dem zweiten / an – in der Standardeinstellung „g“ werden alle Übereinstimmungen gefunden.
- Fügen Sie Ihren Testtext unten ein.
- Übereinstimmungen werden sofort hervorgehoben; die Erfassungsgruppen werden darunter aufgelistet.
- Wenn das Muster ungültig ist, wird in der Fehlermeldung erklärt, was falsch ist.
Beispiel
Eingabe
Pattern: (\w+)@(\w+)\.com
Test string: Contact alice@example.com or bob@test.comAusgabe
✓ 2 matches
#1 groups: $1=alice $2=example
#2 groups: $1=bob $2=testDie Klammern bilden Erfassungsgruppen, auf die Sie in den Ersetzungen als $1 und $2 verweisen können.
Praktische Tipps
- Eine E-Mail-Eingabe validieren? ^[^\s@]+@[^\s@]+\.[^\s@]+$ ist ein tolerantes Muster, das offensichtliche Tippfehler abfängt, ohne gültige, aber ungewöhnliche Adressen abzulehnen – für die vollständige RFC-5322-Konformität ist eine Bibliothek erforderlich, kein Einzeiler.
- Abfragenparameter aus einer URL extrahieren: [?&]([^=]+)=([^&]*) mit dem Flag „g“, anschließend $1/$2 pro Treffer auslesen, anstatt die Parameter manuell an den Zeichen „&“ und „=“ zu trennen.
- Möchten Sie ein Muster in .replace() verwenden? Testen Sie es zuerst hier – die hervorgehobenen Bereiche entsprechen genau dem, was .replace() bearbeiten wird, einschließlich der Erfassungsgruppen.
- Mehrzeilige Protokolle auswerten (mit einem Zeitstempel am Anfang jeder Zeile)? Fügen Sie das Flag „m“ hinzu, damit ^ und $ pro Zeile als Anker dienen und nicht für die gesamte Zeichenkette.
- Sie haben ein Muster aus Python oder PHP kopiert, das hier nicht passt? Achten Sie auf benannte Gruppen (?P<name>...) – JavaScript verwendet (?<name>...), ohne „P“ – oder auf besitzbezeichnende Quantoren (++, *+), die es in JavaScript-Regex nicht gibt.
Ein JavaScript-Regex-Tester, kein allgemeiner
Dieses Tool nutzt die in JavaScript integrierte RegExp-Engine – genau denselben Codepfad, der hinter `str.match(pattern)` oder `pattern.test(str)` in einer Browserkonsole oder unter Node.js steht. Dies unterscheidet sich vom Testen mit PCRE (das von PHP verwendet wird und bei vielen „universellen“ Regex-Testern standardmäßig zum Einsatz kommt) oder dem re-Modul von Python: JavaScript kennt keine besitzbezeichnenden Quantoren oder atomaren Gruppen, und benannte Erfassungsgruppen verwenden (?<name>...) anstelle von PCRE/Pythons (?P<name>...).
Wenn Sie ein Muster in JS oder TypeScript implementieren möchten – sei es eine Formularvalidierung, ein Route-Matcher oder ein Log-Parser –, bedeutet das Testen hier, dass es keinerlei Abweichungen gibt: Was auf dieser Seite hervorgehoben wird, entspricht genau dem, was die neue Funktion `RegExp(pattern, flags)` zur Laufzeit findet.
Wie sich dies in reale Arbeitsabläufe einfügt
Ein Regex-Test steht selten für sich allein. Die übliche Vorgehensweise ist folgende: Überprüfen Sie das Muster hier, führen Sie dann die eigentliche .replace()-Funktion in Ihrem Code aus und vergleichen Sie anschließend den Text vor und nach der Änderung, um sicherzustellen, dass die Ersetzung wie erwartet funktioniert hat und keine weiteren Änderungen vorgenommen wurden.
Das Extrahieren strukturierter Daten mithilfe von Erfassungsgruppen führt oft direkt zu JSON – formatieren Sie die extrahierte Ausgabe, um zu überprüfen, ob sie wie erwartet geparst wurde.
Häufig gestellte Fragen
Welche Variante von regulären Ausdrücken verwendet dieser Tester?
JavaScript (ECMAScript), die Engine in jedem Browser und in Node.js. Die Kernsyntax ist plattformunabhängig, doch einige Funktionen unterscheiden sich je nach Sprache – so variieren beispielsweise die Unterstützung für Lookbehind und die Syntax für benannte Gruppen in Python und Java.
Warum findet mein Suchmuster nur die erste Übereinstimmung?
Das Flag „g“ (global) fehlt. Ohne „g“ bricht ein regulärer Ausdruck nach der ersten Übereinstimmung ab. Dieses Tool verwendet standardmäßig „g“ – überprüfen Sie, ob Sie es nicht entfernt haben.
Warum passt . nicht zu meinen Zeilenumbrüchen?
Standardmäßig entspricht „.“ jedem Zeichen außer Zeilenumbrüchen. Fügen Sie das Flag „s“ (dotall) hinzu, damit „.“ auch Zeilenumbrüche berücksichtigt, oder verwenden Sie [\s\S] als portable Alternative.
Was bedeuten die Ergebnisse der Erfassungsgruppe?
Jedes Klammerpaar in Ihrem Muster erfasst den Text, auf den es abgeglichen wurde. $1 steht für die erste Gruppe, $2 für die zweite und so weiter – darauf beziehen Sie sich bei Ersetzungsvorgängen und im Extraktionscode.
Warum läuft mein regulärer Ausdruck so langsam oder friert ein?
Wahrscheinlich katastrophales Backtracking, verursacht durch verschachtelte Quantoren wie (a+)+ bei nicht übereinstimmender Eingabe. Schreiben Sie das Muster um, um mehrdeutige Wiederholungen zu vermeiden. Dieses Tool begrenzt die Anzahl der Übereinstimmungen auf 1000, um die Reaktionsgeschwindigkeit zu gewährleisten.