HandyTools Hub

Regex-Tester

Testen und debuggen Sie reguläre Ausdrücke mit Echtzeit-Matching und -Hervorhebung.

/ /
Übereinstimmungen werden hier hervorgehoben...

Übereinstimmungsergebnisse

0 matches

Keine Übereinstimmungen gefunden.

Mit einem echten Treffer testen

Ein doppeltes Wort finden

Muster und Testtext

\b(\w+)\s+\1\b
This is is a test

Treffer

is is

Ein Treffer ist noch keine vollständige Validierung

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

Verwendung

  1. Muster eingeben Sie den Ausdruck in das Musterfeld. Er wird als JavaScript-Regulärausdruck behandelt, mit oder ohne umgebende Schrägstriche.
  2. Testtext einfügen Sie ihn darunter. Beide Felder aktualisieren das Ergebnis sofort — es gibt keinen Ausführen-Knopf.
  3. Treffer lesen. Jeder Treffer wird im Text hervorgehoben; das Panel listet die Gesamtzahl und jede Capture-Gruppe auf.
  4. Flags umschalten, um das Verhalten zu ändern: globale Suche, Groß-/Kleinschreibung, mehrzeilige Anker und Punkt-entspricht-Zeilenumbruch ändern das Ergebnis jeweils live.

Praxisbeispiele

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.

Treffer und Capture-Gruppen lesen

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.

Flags und was sie ändern

  • g (global) — jeden Treffer zurückgeben, nicht nur den ersten. Ohne dieses Flag stoppt der Tester nach einem Treffer, und eine Anzahl von „1“ kann irreführen.
  • i (ignore case) — A und a als gleich behandeln.
  • m (multiline) — ^ und $ am Anfang und Ende jeder Zeile greifen lassen statt nur am gesamten String.
  • s (dotAll) — dem Punkt erlauben, Zeilenumbrüche zu treffen, was er sonst verweigert.
  • u (unicode) — Unicode-bewusstes Verhalten aktivieren; ohne dieses Flag gelten astrale Zeichen wie Emoji als zwei Code-Einheiten.
  • y (sticky) — jeden Treffer an der Position verankern, an der der vorherige endete; nützlich für Parser, sonst selten gebraucht.

Häufige Fehler und Randfälle

  • Gierige Quantoren. ".*" passt vom ersten bis zum letzten Anführungszeichen im Text. Verwenden Sie ".*?" für den kürzesten Treffer.
  • Escapen vergessen. Ein wörtlicher Punkt ist \.; [.] funktioniert ebenfalls und ist in Zeichenklassen leichter zu lesen. Dasselbe gilt für +, *, ?, (, ), [, ] und {.
  • Katastrophales Backtracking. Verschachtelte Quantoren wie (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.
  • Zustandsbehaftetes globales Matching. Ein Regex mit dem 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.
  • Unicode-Überraschungen. . 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.

Funktionen

  • Echtzeit-Matching mit Hervorhebung an Ort und Stelle
  • Auflistung der Capture-Gruppen, einschließlich benannter und nicht erfassender Gruppen
  • Umschaltbare Flags: g, i, m, s, u, y
  • Trefferzahl und Details pro Treffer
  • Funktioniert mit großen eingefügten Eingaben wie Logs und Exporten
  • 100 % clientseitig — der Text verlässt den Browser nie

Anwendungsfälle

  • Formularvalidierung: E-Mail-, Telefon- und Datumsmuster gegen echte Beispiele iterieren.
  • Log-Analyse: Extraktionsmuster entwerfen, bevor sie im großen Maßstab laufen.
  • Debugging: Verstehen, worauf ein unbekannter Ausdruck tatsächlich passt.
  • Suchen und Ersetzen: Gruppen prüfen, bevor sie in einem Ersetzungsstring verwendet werden.
  • Lernen: Mit Quantoren, Ankern und Klassen experimentieren und sofortiges Feedback erhalten.

Verwandte Tools

Häufig gestellte Fragen

Welche Regex-Variante verwendet dieser Tester?

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.

Warum endet mein Treffer an der falschen Stelle?

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.

Was zeigen die markierten Treffer und Gruppen an?

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.

Welche Flags sollte ich aktivieren?

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.

Kann ein Regex den Browser einfrieren?

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.

Warum liefert mein Ausdruck mit dem g-Flag bei wiederholter Verwendung andere Treffer?

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