Regex-Tester
Testen und debuggen Sie reguläre Ausdrücke mit Echtzeit-Matching und -Hervorhebung.
Übereinstimmungsergebnisse
0 matchesKeine Übereinstimmungen gefunden.
Testen und debuggen Sie reguläre Ausdrücke mit Echtzeit-Matching und -Hervorhebung.
Keine Übereinstimmungen gefunden.
Muster und Testtext
\b(\w+)\s+\1\b
This is is a testTreffer
is isTesten Sie repräsentative gültige und ungültige Eingaben, bevor Sie einen regulären Ausdruck produktiv einsetzen.
Der Regex-Tester lässt Sie ein Muster schreiben, Beispieltext einfügen und genau sehen, was übereinstimmt — an der richtigen Stelle hervorgehoben und mit aufgelisteten Capture-Gruppen —, bevor der Ausdruck jemals Produktionscode erreicht. Die Treffer aktualisieren sich in Echtzeit während der Eingabe, sodass Sie das Muster iterativ verfeinern können, statt zu raten und die Anwendung neu zu starten. Er ist für Entwickler gedacht, die Validierungsregeln schreiben, für Analysten, die Felder aus Logs extrahieren, und für alle, die bestätigen wollen, was \b\w+@\w+\.\w+\b tatsächlich tut.
Beispiel 1 — schnelle E-Mail-Prüfung. Das Muster ^[^\s@]+@[^\s@]+\.[^\s@]+$ passt auf ada@example.com; auf ada@example nicht, weil das abschließende \.[^\s@]+ einen Punkt und mindestens ein weiteres Zeichen verlangt. Ein bestandenes und ein fehlgeschlagenes Beispiel im selben Panel zeigen genau, was das Muster akzeptiert und ablehnt.
Beispiel 2 — URLs aus einem Log extrahieren. Wenden Sie https?://[^\s"'<>]+ auf eine Logzeile an, und jede URL wird nacheinander hervorgehoben. Die negierte Klasse [^\s"'<>]+ endet beim ersten Leerzeichen oder Anführungszeichen und vermeidet damit den klassischen gierigen Über-Treffer, der den Rest der Zeile verschluckt.
Beispiel 3 — eine Capture-Gruppe debuggen. Bei einem Telefonmuster ^\+?(\d{1,3})[-.\s]?(\d{3})[-.\s]?(\d{4})$ zeigt das Gruppenpanel Gruppe 1 als Ländervorwahl und die Gruppen 2 und 3 als lokale Teile. Kommt eine Gruppe leer zurück, sind meist die umgebenden optionalen Elemente die Ursache — sofort in der Auflistung sichtbar.
Ein Treffer ist der Teilstring, den die Engine akzeptiert hat. Klammern erzeugen Capture-Gruppen: Jedes Klammernpaar zeichnet den Teil des Treffers auf, den es umschließt, nummeriert von links nach rechts nach der öffnenden Klammer. Gruppen erlauben es, Teile zu extrahieren statt nur ihre Anwesenheit zu prüfen — die Vorwahl aus einer Telefonnummer, den Schlüssel aus einer Logzeile, den Pfad aus einer URL.
Zwei Verfeinerungen sind in der Praxis wichtig. Benannte Gruppen, geschrieben (?<year>\d{4}), erscheinen unter ihrem Namen statt unter einer Nummer, was längere Muster deutlich lesbarer macht. Nicht erfassende Gruppen, (?:...), gruppieren Alternativen für Quantoren, ohne die nummerierte Liste zu erweitern; verwenden Sie sie, wenn es bei (cat|dog)+ wirklich um die Wiederholung geht und nicht um das Erfassen.
Alternation und Anker runden das Werkzeug ab: | wählt zwischen Optionen, ^ und $ verankern einen Treffer an Zeilengrenzen (mit dem Mehrzeilen-Flag), und \b markiert eine Wortgrenze, damit ein Muster nicht innerhalb eines längeren Tokens passt.
Die Gruppen werden von links nach rechts nach der Position ihrer öffnenden Klammer nummeriert, nicht nach der Reihenfolge, in der sie im Text erscheinen. Verschachtelte Klammern folgen derselben Regel: Die äußere Gruppe erhält ihre Nummer, bevor die innere gezählt wird. Wenn Sie eine Ersetzung planen, halten Sie sich an diese Nummerierung — in JavaScript-Ersetzungsstrings steht $1 für die erste Gruppe, $2 für die zweite, und $& für den gesamten Treffer. Ein kurzer Test hier mit demselben Ersetzungsmuster zeigt, ob die Zuordnung stimmt.
A und a als gleich behandeln.^ und $ am Anfang und Ende jeder Zeile greifen lassen statt nur am gesamten String.".*" passt vom ersten bis zum letzten Anführungszeichen im Text. Verwenden Sie ".*?" für den kürzesten Treffer.\.; [.] funktioniert ebenfalls und ist in Zeichenklassen leichter zu lesen. Dasselbe gilt für +, *, ?, (, ), [, ] und {.(a+)+ können die Engine bei fast passender Eingabe einfrieren. Ersetzen Sie sie durch negierte Klassen oder verankern Sie das Muster genauer.^/$ ohne Mehrzeilen-Flag. Sie passen nur auf Anfang und Ende des gesamten Strings, was die zeilenweise Validierung still bricht.g-Flag trägt ein lastIndex zwischen Aufrufen; die Wiederverwendung desselben Objekts kann Treffer überspringen. Setzen Sie es zurück oder erzeugen Sie pro Test einen frischen Regex.. passt auf eine einzelne UTF-16-Code-Einheit, sofern das u-Flag nicht gesetzt ist, sodass ein Emoji halbiert werden kann. Aktivieren Sie u für Text, der Nicht-BMP-Zeichen enthalten kann.JavaScript-Regulärausdrücke (ECMAScript), ausgewertet von der Regex-Engine des Browsers. Das ist die Variante, die Sie in Node.js, Chrome und jedem Frontend-Framework erhalten. Ein hier geprüftes Muster verhält sich in Ihrem Anwendungscode also identisch — anders als PCRE-spezifische Funktionen wie Rekursion oder possessive Quantoren, die JavaScript nicht unterstützt.
Fast immer wegen der Gier. Quantoren wie * und + sind standardmäßig gierig und verbrauchen so viel wie möglich, bevor die Engine zurückläuft. Ein Fragezeichen macht sie faul (.*?), sodass der Treffer am nächsten statt am weitesten Abschluss endet. Eine negierte Zeichenklasse wie [^>]* ist oft die schnellere und klarere Alternative.
Jeder Treffer wird im Testtext hervorgehoben. Für jeden Treffer listet das Panel die Capture-Gruppen der Reihe nach auf: Gruppe 1, Gruppe 2 und so weiter, unbenannte Gruppen erscheinen unter ihrer Nummer. Benannte Gruppen der Form (?<name>...) stehen unter ihrem Namen. Nicht erfassende Gruppen (?:...) werden verglichen, aber nicht aufgelistet — nützlich, wenn Sie nur die Gruppierung brauchen.
g findet jeden Treffer statt nur den ersten; i ignoriert Groß- und Kleinschreibung; m lässt ^ und $ an Zeilengrenzen statt nur am Anfang und Ende des gesamten Textes greifen; s erlaubt dem Punkt, Zeilenumbrüche zu treffen. u aktiviert Unicode-bewusstes Matching und sollte immer dann an sein, wenn Ihr Text Emoji oder nicht-lateinische Schriften enthalten kann.
Ja — katastrophales Backtracking. Muster mit verschachtelten Quantoren wie (a+)+ oder (.*)* können bei fast passenden Eingaben exponentielle Laufzeit erreichen. Wenn der Tester nicht mehr reagiert, laden Sie die Seite neu und vereinfachen Sie das Muster, meist indem Sie einen verschachtelten Quantor durch eine negierte Zeichenklasse ersetzen.
Ein Regex mit dem g-Flag merkt sich zwischen Aufrufen eine lastIndex-Position und setzt die Suche dort fort. Verwenden Sie dasselbe Objekt mehrfach, können Treffer übersprungen werden. Setzen Sie lastIndex zurück oder erzeugen Sie für jeden Test einen frischen Regex. Im Tester wird für jede Eingabe neu ausgewertet, daher tritt das Problem nur in Ihrem eigenen Code auf.
Geprüft vom HandyTools-Hub-Team · Zuletzt aktualisiert