Regex-Tester
DevTesten Sie JavaScript-Regular-Expressions mit Treffer-Hervorhebung und Erfassungsgruppen.
Auf dieser Seite
Was ist ein Regex-Tester?#
Ein regulärer Ausdruck ist eine kompakte Notation, um Muster in Text zu beschreiben: „alles, was wie eine E-Mail aussieht“, „das dritte Wort jeder Zeile“, „alle Zahlen, die nicht in Anführungszeichen stehen“. Das Muster zu schreiben, ist nur die halbe Miete — die andere Hälfte ist zu sehen, was es tatsächlich matcht, an Text, der Ihrem ähnelt, bevor man es in Produktionscode einfügt. Ein Regex-Tester ist die Seite, auf der man das tut.
Dieses Werkzeug führt Ihr Muster in Echtzeit gegen Ihren Beispieltext aus, hebt jeden Treffer an Ort und Stelle hervor und listet jede Erfassungsgruppe separat, sodass Sie nicht nur bestätigen können, dass es gematcht hat, sondern was es erfasst hat. Es nutzt die JavaScript-Regex-Engine (dieselbe, die Ihr Browser und Node bereits sprechen), sodass das Verhalten hier mit dem übereinstimmt, was Ihr Code tun wird.
So wird es verwendet#
- Geben Sie das Muster zwischen den beiden
/-Markierungen oben links ein. Sie tippen die Schrägstriche nicht selbst — sie werden für Sie gezeichnet, so wie ein Regex-Literal im Code geschrieben wird. - Geben Sie Flags in das kleine Feld rechts des Musters ein. Die, nach denen Sie am häufigsten greifen werden:
g— alle Treffer finden, nicht nur den ersten.i— Groß-/Kleinschreibung ignorieren.m—^und$matchen den Anfang und das Ende jeder Zeile, nicht nur der ganzen Zeichenkette.s—.darf auch Zeilenumbrüche matchen.u— das Muster als Unicode behandeln (zählt für Emoji und Nicht-ASCII).
- Fügen Sie Ihren Testtext in das Feld unten ein. Nutzen Sie Text, der Ihrer echten Eingabe tatsächlich ähnelt — ein Muster, das auf sauberen Beispielen funktioniert, verhält sich auf unordentlicheren Daten oft falsch.
- Lesen Sie die hervorgehobene Vorschau rechts: jeder Treffer wird an Ort und Stelle, im Kontext, gezeigt. Darunter wird jede Erfassungsgruppe mit ihrem Index, ihrem erfassten Text und dem Offset aufgelistet, wo sie gefunden wurde.
Die wichtigsten Funktionen#
- Live-Hervorhebung. Jeder Treffer wird an Ort und Stelle gegen den Originaltext gerendert, sodass Sie Grenzen auf einen Blick sehen — inklusive des heiklen Falls, wo ein Treffer über Whitespace läuft.
- Capture-Liste pro Gruppe. Gruppenindex, gematchte Teilzeichenkette und Zeichen-Offset, eine Zeile pro Erfassung. Essenziell, wenn ein Muster drei oder vier Gruppen hat und Sie wissen müssen, welche welche ist.
- Mehrere Flags zugleich. Kombinieren Sie
g,i,m,s,ufrei (z. B.giufür global, groß-/kleinschreibungsunabhängig, Unicode-bewusst). - ReDoS-Warnung. Manche Muster — typischerweise verschachtelte Quantoren wie
(a+)+— können auf feindlicher Eingabe exponentiell explodieren. Die Statuszeile markiert das Muster selbst im Moment, in dem es matcht, und mahnt Sie zur Vereinfachung, bevor es jemals feindliche Eingabe trifft. Die Prüfung liest die Form Ihres Musters; sie misst nicht, wie lange der letzte Durchlauf brauchte, und ein wirklich katastrophales Muster kann den Tab trotzdem blockieren — beachten Sie die Warnung. - Entwurfsmäßig begrenzt. Eingaben sind auf 250.000 Zeichen begrenzt, und die Trefferliste wächst nicht über einige Tausend Einträge hinaus (das Capture-Panel zeigt die ersten 200), sodass ein versehentliches Einfügen einer riesigen Datei nicht lautlos für immer laufen kann.
- Kein Round-Trip. Muster und Text werden in Ihrem Browser verarbeitet; nichts wird irgendwohin gesendet.
Anwendungsbeispiel#
Angenommen, Sie haben eine Liste von Log-Zeilen und möchten die Methode und den Pfad aus Zeilen ziehen, die mit einem HTTP-Verb beginnen. Nutzen Sie dieses Muster:
(\w+)\s+(/[\w/-]+)
mit den Flags gm und testen Sie es gegen:
GET /api/users
POST /api/login
DELETE /api/users/42
not a log line
PUT /api/items/3-qty
Das Werkzeug hebt die erste, zweite, dritte und fünfte Zeile hervor (die vierte beginnt nicht mit einem Wort, gefolgt von einem Pfad). Die Capture-Liste meldet für jeden Treffer die Methode und den Pfad separat — sodass DELETE Gruppe 1 ist und /api/users/42 Gruppe 2, und Sie können bestätigen, dass die Pfad-Gruppe das abschließende -qty-Segment in der letzten Zeile korrekt einschließt.
FAQ#
Welche Regex-Variante nutzt dies?#
Die eingebaute Engine von JavaScript — selbige, die von String.prototype.match, RegExp.prototype.exec und Nodes Regex-Literalen genutzt wird. Ein Muster, das hier funktioniert, wird unverändert in Ihrem Frontend-Code oder Ihrem Node-Server funktionieren. Es ist nicht PCRE, RE2 oder Rusts Regex; kopieren Sie ein Muster aus einer PHP- oder Go-Codebasis, testen Sie es hier, bevor Sie sich darauf verlassen.
Das Werkzeug warnt vor möglichem ReDoS. Was heißt das?#
Gewisse Muster lassen sich auf feindlicher Eingabe sehr lange laufen — das klassische Beispiel ist (a+)+b gematcht gegen eine Zeichenkette aus as ohne nachfolgendes b. Angreifer nutzen das für Denial-of-Service auf Regex-basierten Diensten. Die Warnung ist ein statisches Lesen Ihrer Musterform (verschachtelte Quantoren, überlappende Alternation); sie feuert im Moment, in dem ein solches Muster einen Treffer erzeugt, nicht basierend darauf, wie lange der letzte Durchlauf brauchte. Sehen Sie sie, vereinfachen Sie das Muster: entfernen Sie verschachtelte Quantoren, ankern Sie es, oder nutzen Sie atomare Gruppen, wenn Ihre Ziel-Engine sie unterstützt.
Warum matcht mein Muster nur einmal?#
Wahrscheinlich fehlt das g-Flag. Ohne g stoppt eine JavaScript-Regex beim ersten Treffer. Fügen Sie g hinzu, um jedes nicht-überlappende Vorkommen zu finden.
Matcht . Zeilenumbrüche?#
Standardmäßig nicht — . matcht jedes Zeichen außer einem Zeilenabschluss. Fügen Sie das s-Flag (manchmal „dotall“ genannt) hinzu, wenn . über Zeilenumbrüche hinweg greifen soll, was nützlich ist, wenn Sie Blöcke matchen, die Zeilenumbrüche enthalten.