Command Palette

Search for a command to run...

Regex Tester: Debuggen Sie reguläre Ausdrücke gegen echten Text

Regex Tester: Debuggen Sie reguläre Ausdrücke gegen echten Text

T
Toolz Team
|Jul 14, 2026|17 min lesen

Teil der Sammlung Regex

Ich habe den größten Teil eines Nachmittags einmal durch einen einzigen gierigen Quantor verloren Ich habe eine Weiterleitungskarte für eine WordPress-Migration geschrieben - ein paar hundert alte URLs, die auf neue Slugs umgeschrieben werden mussten - und ich hatte einen Regex, der war vermeintlich um den nachlaufenden Slug von jedem Pfad zu erfassen. Es funktionierte mit den drei URLs, die ich in meinem Kopf getestet habe. Es funktionierte nicht am vierten, der zwei Wegsegmente hatte, weil .* Hatte den ersten Schrägstrich fröhlich geschluckt und alles danach. Die Regel leitete stillschweigend die Hälfte der Website an den falschen Ort, und ich fand es von einem Leser heraus, nicht von meinen Tests, weil mein "Testen" auf das Muster starrte und es vertraute.

Das ist das Kernproblem bei regulären Ausdrücken: Sie sind nur schreibgeschützt, bis Sie sie gegen etwas ausführen. Ein Muster wird bis zu dem Moment, in dem der reale Eingang als plausibles Element angezeigt wird, als plausible gelesen, und die Fehlermodi sind leise. Ein Regex, der nichts übereinstimmt, wirft keinen Fehler. Ein zu viel zu viel übereinstimmender Regex wirft keinen Fehler aus. Ein Regex mit einer subtil falschen Erfassungsgruppe gibt Ihnen die falsche Teilzeichenfolge und geht weiter. Die einzige Möglichkeit, ein Muster zu kennen, besteht darin, es mit dem unordentlichen, kantengeschützten Text zu füttern, den es tatsächlich sehen wird und suchen bei dem, was es packt.

ein Regex-Tester Schließt diese Lücke Du steckst dein Muster in ein Kästchen, deinen Beispieltext in ein anderes, und jedes Match leuchtet auf - mit ausgebrochenen Erfassungsgruppen, damit du genau sehen kannst, welches Stück der Zeichenkette in Gruppe 1 gelandet ist gegenüber Gruppe 2. Das von mir für Toolz.dev erstellte läuft auf dem Browser' s nativ RegExp Engine, die gleiche, die Ihr Javascript und TypeScript-Code verwendet, also sehen Sie im Tester, was Sie in der Produktion erhalten. Keine Näherung, kein "nah genug".

Dieser Leitfaden beschreibt, wie Sie mit dem Tester Muster schnell debuggen, was jede Flagge tatsächlich bewirkt, wie Gruppen und benannte Gruppen in der Ausgabe angezeigt werden, und die Javascript-spezifischen Probleme, die Personen aus Python oder PCRE auslösen.

tl; dr: Fügen Sie Ihr Muster in die Toolz.dev Regex-Tester (keine Schrägstriche erforderlich), schalten Sie die G/I/M/S/U/Y-Flags um und legen Sie den Testtext unten ab. Matches markieren live mit abwechselnden Farben, jede nummerierte und benannte Erfassungsgruppe wird pro Übereinstimmung aufgelistet, und Syntaxfehler zeigen die genaue Nachricht der Engine. Es verwendet die echte JavaScript-Regexp-Engine, läuft 100% clientseitig, so dass sensible Protokolle niemals hochgeladen werden, und wird mit dem gekoppelt Regex-Builder Zum Zusammenbau von Mustern von Grund auf neu.


Wie testet man einen Regex, ohne sein gesamtes Programm auszuführen?

Der langsame Weg, einen Regex zu debuggen, ist die Schleife, mit der die meisten von uns beginnen: Bearbeiten Sie das Muster in Ihrem Code, führen Sie das Programm aus, lesen Sie die Ausgabe, raten Sie, was schief gelaufen ist, wiederholen Sie Jede Iteration kostet einen vollständigen Programmlauf, und das Feedback ist indirekt - Sie sehen die Konsequenz des Spiels, nicht das Match selbst.

Ein Tester klappt diese Schleife auf nichts. Sie fügen das Muster ein, fügen repräsentativen Text ein und sehen die Übereinstimmungen sofort. Wenn Sie ein Zeichen im Muster ändern, hebt das Update hervor. Dies verschärft das Feedback bis zu dem Punkt, an dem Sie können erforschen- versuchen Sie es mit einem + wo du eine hattest *Fügen Sie eine Wortgrenze hinzu, machen Sie eine Gruppe nicht einfangend - und beobachten Sie, wie der Effekt in Echtzeit landet, anstatt ihn sich vorzustellen.

Die Schlüsseldisziplin ist die Verwendung echt Testtext, nicht das saubere Beispiel im Kopf Die URL, die meine Redirect-Map kaputt gemacht hat, hatte zwei Pfadsegmente; mein mentaler Testfall hatte einen, hätte ich die eigentliche Liste alter URLs in einen Tester eingefügt, wäre das gierige Match auf Zeile vier sichtbar falsch gewesen Schnapp dir die eigentlichen Log-Zeilen, die eigentlichen Benutzereingaben, die eigentlichen Dateipfade - auch die hässlichen - und lass dir vom Tester zeigen, wo das Muster auseinanderfällt, bevor deine Benutzer es tun.

Was ändern die Regex-Flags tatsächlich?

Flags ändern die Anwendung des gesamten Musters, und das Missverständnis steht hinter einem großen Anteil von "Warum nicht diese Arbeit" Momente. der Tester Stellt alle sechs JavaScript-Flags als Umschalttasten frei, sodass Sie eine umdrehen und die Ergebnisverschiebung beobachten können.

g - global. Ohne sie, Matching Stopps beim ersten Treffer. Damit findet der Motor jede Übereinstimmung im Text. Im Tester ist Global standardmäßig aktiviert, da Sie fast immer alle Übereinstimmungen sehen möchten. Schalten Sie es aus, um zu bestätigen, wie ein Anruf mit einem einzigen Match wie String.match ohne g würde zurückkehren.

i - Fall ignorieren. macht das gesamte Muster CASE-unempfindlich, so error Streichhöl Error und ERRORdrohen unkompliziert und die am häufigsten verwendete Flagge nach g.

m - mehrzeilig. Dieser wird weithin missverstanden. es tut nicht fällen . Kreuzlinienbrüche. es ändert was ^ und $ Anker zu: mit m, sie stimmen am Anfang und Ende von jedem überein säumen, nicht nur Anfang und Ende der ganzen Zeichenfolge. Wenn Sie Zeile für Zeile in einem Log übereinstimmen, möchten Sie dies.

s - dotAll. Dies ist die Flagge, die macht . stimmen Newline-Zeichen überein Ohne es, . Passt zu jedem Charakter ausgenommen Ein Zeilenumbruch, weshalb ein Muster, das mehrere Linien überspannen soll, stoppt oft leise beim ersten. Wenn Ihr Match die Grenzen überschreitet, s Ist, was man braucht - nicht mdrohen

u - unicodedrohen Aktiviert den vollständigen Unicode-Modus, der macht \u{...} Entkommt Arbeit, behandelt Paare als einzelne Codepunkte und macht Zeichenklassen wie \p{Letter} vorhanden Wichtig, wenn Ihr Text Emoji oder nicht-lateinische Skripte enthält.

Y - klebrig. Verankert jeden Spielversuch an die genaue Position von lastIndex, so gelingt das Matching nur, wenn es genau dort beginnt. Es ist eine Nischenflagge, die in Tokenizern und Parsern verwendet wird, die meisten Alltagsarbeit berührt sie nie.

Die am meisten Zeit kosten m gegen sdrohen Die Leute greifen nach Multiline, wenn sie Dotall meinen. Wenn Ihr Punkt keine Linien überschreitet, benötigen Sie sdrohen Wenn Ihre Anker nicht an den Grenzen der Linien stoßen, benötigen Sie mdrohen Sie lösen unterschiedliche Probleme und werden oft zusammen verwendet.

Wie werden Aufnahmegruppen in der Ausgabe angezeigt?

Klammern in einem Muster erledigen zwei Aufgaben: Sie gruppieren Untermuster für Quantifizierer oder Wechsel erobern Der passende Slice zur Extraktion Wenn Sie' re einen Regex verwenden, um Daten aus Text zu ziehen - ein Datum's Jahr und Monat, eine Protokollzeile's Zeitstempel und Level - die Erfassungsgruppen sind der gesamte Punkt, und sie falsch zu machen ist die häufigste Quelle von & quot; das Muster stimmt überein, aber ich habe die falsche Zeichenfolge."

der Tester Listet jedes Spiel mit seinen darunter aufgeschlüsselten Aufnahmegruppen auf. Gruppe 1 ist das erste parenthesized-Untermuster, die Gruppe 2 das zweite usw., das jeweils mit dem genauen Text angezeigt wird, den es für dieses Spiel erfasst hat. Dies macht die Gruppengrenze offensichtlich: Wenn Gruppe 1 mehr als erwartet erwischt hat, können Sie es sehen und die Klammer einziehen.

Benannte Gruppen erhalten die gleiche Behandlung. Wenn du schreibst (?<year>\d{4})-(?<month>\d{2})Der Tester zeigt die Aufnahmen namentlich an - <year> und <month>- neben ihren nummerierten Äquivalenten, damit Sie die Namenskarte mit den von Ihnen beabsichtigten Slices bestätigen können, bevor Sie sich darauf verlassen match.groups.year Im Code. Benannte Gruppen machen Muster selbstdokumentieren und lesbarer, und sie können sich im Tester richtig auflösen, ist der schnellste Weg, ihnen zu vertrauen.

Eine verwandte Falle taucht auf: Eine Gruppe, die am Muster teilnimmt, aber bei einem bestimmten Versuch nicht übereinstimmt, zeigt nicht eine leere Zeichenfolge. Diese Unterscheidung ist wichtig, denn in Javascript ist eine solche Gruppe undefined, und Code, der annimmt, dass es immer eine Zeichenfolge ist, die geworfen wird. Wenn Sie es im Tester sehen, werden Sie aufgefordert, diesen Zugriff zu schützen.

Welcher Regex-Geschmack ist das und warum ist es wichtig?

Reguläre Ausdrücke sind keine Sprache. Das Muster, das in Python funktioniert re Modul kann sich in JavaScript anders verhalten - oder werfen - und umgekehrt Dies Tester JavaScript verwendet (ECMAScript) Engine in Ihren Browser integriert, die Byte für Byte die gleiche Engine Node.js läuft Wenn Sie also & #39; JavaScript, TypeScript oder Node-Code neu schreiben, sind die Ergebnisse hier genau das, was Ihr Code tun wird.

Diese Präzision schneidet in beide Richtungen. Wenn Sie ein Muster aus einer für PCRE geschriebenen Antwort kopieren (PHP und die preg_ Funktionen, die ich ständig in WordPress-Arbeit verwende) oder für Python, einige Funktionen won&#39; t übersetzen JavaScript fehlte historisch gesehen Lookbehind-Assertionen, gewann sie relativ kürzlich und behandelt einige Unicode-Eigenschaften noch immer anders Possessive Quantoren und Atomgruppen von PCRE don&#39; gibt es in JavaScript überhaupt nicht Rekursion - ein PCRE-Feature zum Abgleichen verschachtelter Strukturen - hat kein JavaScript-Äquivalent.

Das praktische Ergebnis: Testen Sie den Geschmack, in dem Sie sich einsetzen. Ein Tester, der eine Engine implementiert, ist nützlicher als einer, der einen Fuzzy-Durchschnitt von allen implementiert, denn "er hat im Tester funktioniert" bedeutet "Es wird in meinem Code funktionieren." Für PHP- und WordPress-Arbeit behalte ich die Unterschiede im Auge und verifiziere die Serverseite separat; für alles JavaScript, dieser Tester ist die Quelle der Wahrheit. Das breitere Toolkit für diese Art der sprachbewussten Verifizierung wird in der Anleitung für die Coding-Toolsdrohen

Was sind die alltäglichen Verwendungen für einen Regex-Tester?

Erstellen und Debuggen von Validierungsmustern

E-Mail-Felder, Telefonnummern, Postleitzahlen, Nacktschnecken, Zeichenfolgen für semantische Versionen - jedes Formular validiert etwas, und die Validierung ist normalerweise ein Regex. Mit dem Tester können Sie die unangenehmen Fälle nach Ihrem Muster werfen, bevor es versendet wird: die E-Mail mit einem Plus-Adressierungs-Tag, die Telefonnummer mit einer Erweiterung, die Versionszeichenfolge wie 1.10.0 dass ein naives Muster abgeschnitten wird. Fügen Sie eine Spalte mit realen Werten ein und beobachten Sie, welche nicht übereinstimmen.

Daten aus Protokollen extrahieren

Serverprotokolle, Anwendungsprotokolle und CSV-Exporte sind halbstrukturierter Text, und mit regex ziehen Sie Felder heraus Erfassungsgruppen greifen nach dem Zeitstempel, dem Level, der Anforderungs-ID. Die Gruppenaufschlüsselung testern&#39; s pro Spiel ist genau die Ansicht, die Sie hier benötigen - fügen Sie ein Dutzend echte Protokollzeilen ein und bestätigen Sie, dass jedes Feld in der richtigen Gruppe über alle landet, nicht nur über die aufgeräumte erste Zeile. Dies passt zur Ansicht API-Debug-Workflow Wo Antwortkörper und Header nach bestimmten Werten abgekratzt werden.

Suchen und Ersetzen über eine Codebasis

Editoren und IDES unterstützen Regex beim Finden und Ersetzen, und ein schlechtes Muster kann weit mehr als beabsichtigt umschreiben. Testen der harmonieren Seite in einem dedizierten Tester, bevor Sie den Ersatz ausführen, ist eine günstige Versicherung - sehen Sie genau, was das Muster in einer repräsentativen Stichprobe auswählt, und führen Sie dann den Ersatz mit Sicherheit aus. Meine Redirect-Map-Katastrophe war im Grunde ein Finden und Ersetzen, das ich nie zuvor anhand realer Eingaben getestet habe.

Lernen und Lehren Regex

Die Live-Highlighting macht den Tester zu einem echten Lernwerkzeug. Erstellen Sie ein Muster nacheinander und beobachten Sie, wie das Match-Set schrumpft und wächst, während Sie Anker, Quantifizierer und Klassen hinzufügen. Sehen \d+ Schnapp dir eine ganze Zahl und dann \d Das Ergreifen einer einzelnen Ziffer bedeutet mehr für das Verständnis als jede Prosaerklärung. Wenn Sie bereit sind, ein Muster aus Komponenten zusammenzustellen, anstatt ein vorhandenes zu debuggen, Regex-Builder ist das Begleitwerkzeug.

Wie vermeidest du die Match-Falle mit Nulllänge?

Ein Muster, das zu einer leeren Zeichenfolge passen kann - a*, \d*, (foo)?- kann & quot; match&quot; an jeder Position zwischen den Zeichen eine Flut leerer Übereinstimmungen erzeugen Naiver Matching-Code, der nicht & #39; ewig über eine Null-Längen-Matchschleife hinaus vordringt Die Tester Schutz vor diesem intern, indem es immer vorrückt, damit es nie hängt, aber es wird zeugen von Sie die leeren Übereinstimmungen.

Diese Anzeige ist eine Funktion, kein Rauschen. Ein Stapel leerer Übereinstimmungen ist der Tester, der Ihnen sagt, dass Ihr Quantifizierer zu freizügig ist. Wenn Sie "eine oder mehrere Ziffern" gemeint haben, haben Sie geschrieben \d* Wenn du wolltest \d+drohen Wenn eine Gruppe benötigt wird, haben Sie diese optional mit markiert ?drohen Die leeren Übereinstimmungen zu sehen ist die Diagnose, die Sie auf den Fix zeigt. Wenn Ihr Muster stimmt, sind die Streichhölzer die Teilzeichenfolgen, die Ihnen wichtig sind, und nichts anderes.

Javascript Regex vs. Andere Geschmacksrichtungen: Ein schneller Vergleich

Feature Javascript (dieser Tester) PCRE (PHP) Python re
Benannte Gruppen (?<name>...) (?<name>...) oder (?P<name>...) (?P<name>...)
Rückblick Unterstützt (moderne Motoren) unterstützt unterstützt
Atomgruppen / Possessiv Nicht unterstützt unterstützt begrenzt
Rekursion Nicht unterstützt unterstützt Nicht unterstützt
Punkt stimmt mit der Newline-Flagge überein s (dotall) s (dotall) re.DOTALL
Unicode-Eigenschaft \p{...} bedarf u Fahne bedarf u Modifikator regex Nur Modul
Sticky Matching y Fahne \G Anker \G-wie via match Position

Die Tabellenstunde lautet: "Regex" ist eine Familie, kein Standard. Die Syntax überlappt sich genug, um Sie in das Kopieren von Mustern über Sprachen hinweg zu säumen, und die Unterschiede sind genau die erweiterten Funktionen, nach denen Sie bei harten Problemen greifen. Testen Sie Ihren Zielgeschmack. Für JavaScript und Knoten ist das dieser Tester; Webentwickler-Toolkit Deckt ab, wo die anderen sprachspezifischen Werkzeuge passen.

Ist es sicher, Regex gegen sensiblen Text zu testen?

Der Text, gegen den Sie Regex testen, ist häufig die sensible Art: Produktionslogzeilen mit IP-Adressen und Benutzer-IDs, Exporte mit E-Mail-Adressen, Konfigurationsdateien mit internen Hostnamen. Das sind genau die Daten, die Sie sollte nicht Fügen Sie in ein Tool ein, das es an einen Server verschickt.

der Toolz.dev Regex-Tester Läuft komplett in Ihrem Browser Die Musterkompilierung, das Matching, die Gruppenextraktion - alles ist clientseitiges JavaScript, ohne dass eine Netzwerkanfrage Ihr Muster oder Ihren Text irgendwo hin trägt Schneiden Sie Ihre Verbindung nach dem Laden der Seite und sie funktioniert weiter That&#39;s eine Architekturgarantie, kein Satz zur Datenschutzrichtlinie, und it&#39; s das gleiche Browser-First-Prinzip hinter jedem Tool im Set, das im Datenschutz-Leitfadendrohen

Das bedeutet, dass Sie die echten Protokollzeilen einfügen können - diejenigen mit der tatsächlichen PII, die ein Muster ergibt. & #39;s Edge-Fälle werden angezeigt - und sicher dagegen debuggen können. Das und #39;s ist der springende Punkt: Der Tester ist nur nützlich, wenn Sie ihm echte Eingaben zuführen, und echte Eingaben sind oft genau das, was Sie können. & #39;t an jemand anderen senden. & #39;s-Server.

FAQ

Wie teste ich einen regulären Ausdruck online?

Geben Sie Ihr Muster ohne die umgebenden Schrägstriche in das Musterfeld ein, wählen Sie Ihre Flags aus und fügen Sie Beispieltext in den Testbereich ein. Übereinstimmungen markieren sofort und Erfassungsgruppen werden für jedes Spiel aufgelistet. Alles läuft in Ihrem Browser - nichts wird hochgeladen.

Welchen Regex-Geschmack verwendet dieser Tester?

Es verwendet die in Ihrem Browser integrierte JavaScript (ECMAScript) -Regexp-Engine, die mit der in Node.js identisch ist. Die Ergebnisse stimmen überein, wie sich das gleiche Muster in Javascript und TypeScript verhält. JavaScript Regex unterscheidet sich von PCRE, Python's Re-Modul und Java-Mustern in einigen erweiterten Funktionen wie Atomgruppen und Rekursion. Testen Sie also den Geschmack, in dem Sie bereitstellen.

Was bedeuten die Regex-Flags g, i, m und s?

Das g (globale) Flag findet alle Übereinstimmungen, anstatt beim ersten anzuhalten Das i-Flag macht das Matching case-unsensitive Das m (multiline) Flag lässt die ^ - und $-Anker bei Zeilenumbrüchen übereinstimmen, anstatt nur den String-Start und - Ende. Das s (dotAll) - Flag lässt den Punkt auch mit Zeilenumbrüchen übereinstimmen Das m - und das s-Flag werden oft verwechselt - m ändert die Anker, s den Punkt.

Wie funktionieren Capture-Gruppen im Tester?

Klammern in Ihrem Muster erstellen Capture-Gruppen. Der Tester listet jede nummerierte Gruppe mit dem Text auf, den er für jede Übereinstimmung erfasst hat, sodass Sie überprüfen können, welches Stück der Zeichenfolge jedes Teil des gegriffenen Musters erfasst wird. Benannte Gruppen geschrieben als (?...) werden neben den nummerierten Gruppen namentlich angezeigt.

Warum stimmt meine Regex nichts überein oder wirft einen Fehler aus?

Ein Muster, das nichts übereinstimmt, hat normalerweise ein überspezifisches Zeichen oder ein nicht entwichenes Sonderzeichen wie ein literaler Punkt oder ein Pluszeichen. Ein Muster, das einen Fehler auslöst, hat ein Syntaxproblem, wie z. B. eine unausgeglichene Klammer oder Klammern. Der Tester zeigt die genaue Fehlermeldung der Engine an, damit Sie das Problem schnell finden können.

Wie stimme ich über mehrere Zeilen überein?

Aktivieren Sie das S (dotall)-Flag, wenn der Punkt die Zeilenumbrüche überspannt, und aktivieren Sie das M-Flag (Multiline), wenn die Anker ^ und $ am Anfang und Ende jeder Zeile übereinstimmen sollen. Durch die Kombination beider funktioniert ein einzelnes Muster auf natürliche Weise gegen mehrzeilige Eingaben wie Protokolle oder CSV-Zeilen.

Ist es sicher, Regex gegen sensible Daten zu testen?

Ja. Jegliches Matching geschieht in JavaScript innerhalb Ihres Browsers - kein Muster oder Testtext wird an einen Server gesendet, nichts wird protokolliert und das Tool funktioniert mit deaktivierter Verbindung. Sie können sicher mit Protokolldateien, persönlichen Daten oder proprietären Formaten testen.

Was ist der Unterschied zwischen einem Regex-Tester und einem Regex-Builder?

Ein Regex-Tester führt ein vorhandenes Muster für Text aus, sodass Sie es überprüfen und debuggen können, während ein Regex-Builder Ihnen beim Erstellen eines Musters aus Komponenten oder allgemeinen Vorlagen hilft. Verwenden Sie den Regex Builder auf dieser Website, um ein Muster zusammenzustellen, und bringen Sie es dann zum Tester, um es anhand realer Beispieldaten zu überprüfen.


Reguläre Ausdrücke bleiben schreibgeschützt, bis Sie sie gegen echte Eingaben ausführen, und die Fehler sind leise - nichts stimmt überein, zu viele Übereinstimmungen, die falsche Gruppe erfasst, und kein Fehler sagt Ihnen Ein Tester macht das Muster sichtbar: Füge deinen Regex ein, Füttere es mit dem hässlichen echten Text und schaue genau, was er packt, bevor er das Falsche in der Produktion ergreift.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!