Zum Inhalt springen

Regex-Tester

Regex Tester

Testet einen regulären Ausdruck gegen Beispieltext, mit Live-Hervorhebung der Treffer und Auflistung der Fanggruppen.

Führt einen regulären Ausdruck gegen Beispieltext aus und zeigt jeden Treffer mit seinen Offsets, seinen Erfassungsgruppen und der Ersetzung, die er erzeugen würde. Es ist die Engine des Browsers selbst, sodass das, was hier geschieht, das ist, was in Ihrem JavaScript geschehen wird.

🔒 Läuft vollständig in Ihrem Browserregextestpattern
Ansicht

Muster

//g

kann irgendwo in der Zeichenkette treffen, 2 Fanggruppen.

Testen gegen

Es werden alle Treffer aufgelistet. Ohne das `g`-Flag verwendet `String.replace` nur den ersten.

0 Treffer

Zeit

0,0 ms

ask@example.com, 문의@example.co.kr and no-reply+tag@mail.example.org

Ersetzen

`$1`, `$<name>`, `$&`, `` $` ``, `$'` und `$$` werden alle aufgelöst, genau so, wie `String.replace` sie auflöst.

So funktioniert es

  1. Schreiben Sie das Muster und setzen Sie die Flags

    Die Flag-Schaltflächen sind die sechs, die zählen: global, ignore case, multiline, dotAll, unicode und sticky. Das Literal oben ist das, was Sie in Code einfügen würden.

  2. Fügen Sie Text ein, den Sie tatsächlich haben

    Treffer werden an Ort und Stelle hervorgehoben, in wechselnder Farbe, damit benachbarte unterscheidbar sind, und in einer Tabelle mit dem Wert jeder Gruppe aufgeführt – einschließlich der Gruppen, die nicht beteiligt waren.

  3. Probieren Sie die Ersetzung

    `$1`, `$<name>`, `$&`, `` $` ``, `$'` und `$$` expandieren alle genau so, wie `String.replace` sie expandiert, sodass die Vorschau die echte Ausgabe ist.

Häufige Fragen

Warum warnt die Seite vor einem fehlenden `g`-Flag?

Weil die Liste jeden Treffer zeigt, Ihr Code ohne `g` aber nicht. `String.replace` ändert nur den ersten, und `matchAll` wirft rundheraus. Es ist der Unterschied zwischen dem, was Sie hier sehen, und dem, was Ihr Programm tut.

Ist das dieselbe Engine wie in Python oder PCRE?

Nein – es ist die von JavaScript. Lookbehind, benannte Gruppen und `\p{…}` werden hier unterstützt, aber atomare Gruppen, possessive Quantoren, Rekursion und Inline-Flag-Gruppen nicht, und das Verhalten von Zeichenklassen unterscheidet sich stellenweise. Ein Muster, das hier funktioniert, kann anderswo trotzdem scheitern.

Mein Muster hängt die Seite auf.

Das sollte es nicht – das Matching läuft in einem Worker, gerade weil ein katastrophal zurückverfolgendes Muster auf keine andere Weise unterbrochen werden kann. Dauert es zu lange, wird der Lauf abgebrochen und gemeldet, was auch ein nützliches Signal ist: Ein Muster, das das hier tut, tut es auch auf Ihrem Server.

Warum passt `.` nicht auf meinen Zeilenumbruch?

Weil dafür `s` (dotAll) da ist. Ohne es passt `.` auf alles außer einem Zeilenende – und `m` (multiline) ist noch einmal etwas anderes: Es ändert, was `^` und `$` bedeuten, nicht, worauf `.` passt.

Eingabe aus

Danach

Diese Tools nehmen an, was dieses hier erzeugt, das Ergebnis kann also direkt weiter.