
Regex online testen: Praxisleitfaden zum Debuggen regulärer Ausdrücke
Testen Sie eine JavaScript-Regex, prüfen Sie Capture-Gruppen und sehen Sie ein $1-Replace im Browser, bevor das Muster in Produktion landet.
Ein Muster, das richtig aussieht, verdient trotzdem eine Eingabe, die scheitert
Ein regulärer Ausdruck ist ein kleines Programm. Er ist schnell geschrieben, schnell aus einem Kommentar eingefügt und teuer, wenn er die falsche Zeichenkette akzeptiert oder den Tab einfriert. Der Regex-Tester führt die JavaScript-RegExp-Engine des Browsers auf einem Muster und einem Text aus, die Sie lokal einfügen — Treffer links hervorgehoben, Karten mit Gruppen rechts, optional eine Replace-Vorschau. Es gibt keinen Dialekt-Schalter: nicht PCRE, nicht Python, nicht die Engine einer Datenbank. Das ist dieselbe Familie wie Node und wie das Schlüsselwort pattern eines JSON Schema, das Ajv auswertet. Die Seite liegt im Hub der Entwickler-Utilities, neben Slugify und dem Case-Converter, für Aufgaben, die kein handgeschriebener Ausdruck sein sollten.
Wo der Tester hilft, und wo ein Unit-Test übernehmen sollte
Ein Muster, das Sie in Code, eine Fixture oder ein JSON-Schema-pattern einfügen wollen.
Manche Aufgaben haben schon ein Werkzeug, das die Regeln kennt. Ein handgeschriebener Ausdruck driftet.
Muster, die einen Blick überstehen und an echten Daten scheitern
Der Tester kompiliert das Feld mit new RegExp. Rekursive Konstrukte wie (?R) sind hier ungültig und zeigen die Fehlermeldung der Engine. Die Schrägstriche um das Feld sind nur die Oberfläche, nicht Teil des Musters. /(\w+)/gi einfügen entfernt die Begrenzer und mischt diese Flags mit den bereits aktiven — es ersetzt sie nicht. War g schon an, bleibt g an. Die zweite Falle ist der Backslash: Das Feld ist die Regex-Quelle, also bedeutet \d Ziffern. \\d aus einem JSON- oder Java-String sucht einen literalen Backslash gefolgt von d.
Auf "one" and "two" liefert das Muster ".+" mit g einen Treffer: die ganze Spanne vom ersten bis zum letzten Anführungszeichen. Die Engine nimmt so viel sie kann und gibt Zeichen zurück, bis das letzte Anführungszeichen passt. Auf ".+?" zu wechseln heißt nicht „nur die gemeinten Wörter“. Mit g sind es zwei Treffer, "one" und "two". Lazy bedeutet der kürzeste Erfolg, kein semantischer Filter. "[^"]*" ist das Muster, das ein Anführungszeichen nicht überqueren kann.
Eine Form wie (a+)+ gegen eine lange Folge von a, die das erwartete Ende nie erreicht, kann in katastrophales Backtracking kippen. Der Tester hat kein Server-Timeout. Er läuft auf dem Hauptthread des Tabs, die Seite kann einfrieren. Das Werkzeug deckelt die Rückgabe: Die globale Suche stoppt und zeigt eine Kürzungswarnung, entweder weil sie die weiche Grenze von 500 Treffern erreicht hat, oder weil ein Muster der Breite null den Schleifenwächter ausgelöst hat (die Engine rückt nach einem leeren Match um ein Zeichen vor, damit g nicht endlos läuft). Dieser Wächter macht einen verschachtelten Quantor nicht sicher. Der Upload akzeptiert .txt, .md und .log bis 32 MiB in die Testzeichenfolge, weiterhin lokal — ein volles Log plus ein verschachteltes Muster blockiert den Tab zuverlässig.
Die Kachel „E-Mail (approx.)“ ist [A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,} auf [email protected] x not-an-email [email protected]. Mit g hebt sie [email protected] und [email protected] hervor. Das ist eine Demo, nicht RFC 5322, und die Seite sagt das. Dieselbe Ehrlichkeit gilt für Sticky: Das Flag y matcht hier nur am Anfang der Testzeichenfolge, weil lastIndex bei jedem Lauf zurückgesetzt wird. Es setzt nicht „dort fort, wo der letzte Treffer endete“. Und die Ergebnisse aktualisieren sich nicht während der Eingabe. Muster, Flags, Modus oder Text ändern löscht die Karten, bis Sie wieder auf Prüfen klicken.
Was jedes Flag und jeder Modus hier wirklich ändert
Sechs Flags, keine weiteren. Standard ist nur g.
Match listet Treffer. Replace zeigt zusätzlich die ersetzte Zeichenkette, mit JavaScript-Ersetzungsmustern.
Eine benannte Capture ist dieselbe Gruppe wie ihre Nummer. Die Karte zeigt sie einmal.
Einen Fall ausführen, dann nur eine Variable ändern
Im Regex-Tester läuft nichts, während Sie tippen. Die vorherigen Karten verschwinden, sobald sich die Eingaben ändern.
Die Quelle schreiben, kein Literal
Tippen Sie \d+, nicht /\d+/g. Fügen Sie doch ein Literal /muster/flags ein, entfernen Einfügen oder Fokusverlust die Begrenzer und mischen die Flags. Ein leeres Muster ist ein Fehler. Ein ungültiges Muster zeigt die JavaScript-Meldung.
Nur das Flag umschalten, das Sie prüfen wollen
g ist standardmäßig an. Schalten Sie es aus, um zu bestätigen, dass Sie wirklich nur einen Treffer wollten. Setzen Sie m, bevor Sie ^ auf einer zweiten Zeile vertrauen. Setzen Sie u vor \p{…} — ohne u matcht \p{L} die literalen Zeichen p{L}, keine Buchstaben. Lassen Sie y aus, außer Sie prüfen einen Treffer, der bei Index 0 beginnen muss.
Prüfen klicken und die Karte lesen, nicht nur die Hervorhebung
Die Hervorhebung zeigt, wo der Treffer sitzt. Die Karte zeigt den Index und jede Gruppe. Eine Karte anklicken hebt diesen Treffer hervor. Im Replace-Modus lesen Sie die ersetzte Zeichenkette unter den Karten, bevor Sie das Muster in den Code kopieren.
Die Kacheln sind Fixtures, keine Bibliothek von Produktionsvalidatoren.
(\w+)=(\d+) auf user=42 role=admin env=prod\d, \w, \s, ., [], ^, $, \b, +, *, ? und () an der Einfügemarke ein. Klammern setzen die Einfügemarke nach innen.txt-, .md- oder .log-Datei bis 32 MiB in die Testzeichenfolge, im Browser. Nehmen Sie einen kurzen Ausschnitt, wenn das Muster nicht offensichtlich linear istDieselbe Engine in Node
Nodes RegExp ist dieselbe Sprache. matchAll verlangt das Flag g. Ohne g rufen Sie exec einmal auf.
Einfaches Beispiel
Die Ersetzungsmuster sind dieselben, die das Replace-Feld akzeptiert. Das ist die eingebaute Kachel, keine eigene Template-Sprache.
Einfaches Beispiel
Keine Installation, nichts wird hochgeladen, Flags und Gruppen sichtbar, Replace-Vorschau inklusive. Gegenseite: kein Dialekt-Schalter, Sticky nur bei Index 0, höchstens 500 zurückgegebene Treffer, und ein verschachtelter Quantor kann den Tab einfrieren, weil die Ausführung lokal ist. Behalten Sie die Seite für eine Fixture und ein Review. Committen Sie das Muster neben Tests, wenn es Produktionseingaben schützt. Stand der Ausdruck nur für einen Slug oder einen Schreibweisenwechsel, wechseln Sie zu Slugify oder zum Case-Converter, statt ihn zu pflegen.
Fazit
Testen Sie das Muster gegen eine Zeichenkette, die scheitern soll, in der Engine, die es ausführen wird. Für JavaScript ist das RegExp, und genau die nutzt der Regex-Tester — einschließlich eines JSON-Schema-pattern, das Sie danach mit Ajv im JSON-Schema-Validator kompilieren. Nehmen Sie die Kachel E-Mail (approx.) nicht als Validator, erwarten Sie nicht, dass Flag y mitten in der Zeichenkette weitermacht, und geben Sie einem verschachtelten Quantor kein 32-MiB-Log. Wenn die Aufgabe ein Slug oder ein Schreibweisenwechsel ist, lassen Sie den Ausdruck und nehmen Sie das passende Werkzeug im Hub der Entwickler-Utilities.
Verwandte Artikel

Zufälliger UUID v4, sortierbare UUID v7 und ULID, kompakter Nanoid: Vergleich und Online-Generatoren für Primärschlüssel und öffentliche IDs.

MD5- oder SHA-Digest berechnen oder eine Nachricht per HMAC signieren — im Browser. Hex, Base64 oder Base64URL, lokale Text-Prüfsummen und Webhooks.

Kein SSH und kein nginx für ein Next.js-Sideproject. Vergleich von Railway, Render, Vercel und einem VPS — dann aus Git deployen, nachdem Assets im Browser minifiziert wurden.