Sprache: Deutsch

tools / regex

regex/

Live-Tester für JavaScript-Regex: hebt Treffer hervor, listet Capture-Gruppen auf und zeigt eine Vorschau der Ersetzung.

Vorlagen

Testtext

Hervorgehobene Treffer


      

Trefferliste

#PositionTrefferGruppen

Ersetzen

Häufige Fragen

Welche Regex-Engine wird verwendet, und ist sie mit Python oder PCRE identisch?

Verwendet wird die im Browser eingebaute JavaScript-Regex-Engine, die Syntax weicht daher etwas von Python, PCRE und Java ab. Benannte Gruppen schreibt man (?<name>...) statt (?P<name>...) wie in Python; Inline-Flags wie ein führendes (?i) werden nicht unterstützt, setze stattdessen das Flag i; possessive Quantoren und atomare Gruppen gibt es ebenfalls nicht. Ob neuere Syntax wie Lookbehind funktioniert, hängt von deinem Browser ab.

Warum passt ein aus dem Code kopierter regulärer Ausdruck nicht?

Meist wurden die umgebenden Schrägstriche, die Flags am Ende oder die Escape-Backslashes mitkopiert. Gib im Eingabefeld nur das ein, was zwischen den beiden Schrägstrichen steht, und setze Flags wie g und i rechts. Hast du aus einem JavaScript-String kopiert, ändere \\d+ in \d+, denn im Feld müssen Backslashes nicht noch einmal maskiert werden.

Warum bekomme ich nur einen Treffer, oder warum verhalten sich ., ^ und $ seltsam?

Prüfe zuerst die Flags neben dem Eingabefeld. Ohne g wird nur der erste Treffer genommen, was auch in der Überschrift der Liste steht. Der Punkt passt nicht auf Zeilenumbrüche, außer du setzt s; ^ und $ passen standardmäßig nur auf Anfang und Ende des gesamten Textes, für zeilenweises Abgleichen setze m. y ist der Sticky-Modus: Treffer müssen am Anfang beginnen und lückenlos aufeinander folgen, du brauchst ihn daher selten.

Was tun bei der Meldung „Der Abgleich dauerte länger als 1,5 s und wurde abgebrochen“?

Der reguläre Ausdruck macht bei deinem Text zu viel Backtracking und muss umgeschrieben werden. Ein typischer Übeltäter ist ein verschachtelter Quantor wie (a+)+, dessen Laufzeit sich bei einem langen, nicht passenden Text vervielfacht. Die Seite führt den Ausdruck in einem Hintergrund-Thread aus und bricht ihn nach 1,5 Sekunden ab, die Seite selbst friert also nie ein. Meist hilft es, die Quantoren genauer zu fassen, die Verschachtelung zu entfernen oder einen engeren Zeichenbereich zu verwenden.

Was passiert bei sehr vielen Treffern oder einem sehr langen Text?

Hervorhebung und Liste zeigen höchstens die ersten 1000 Treffer und weisen darauf hin, wenn es mehr gibt; das Ersetzungsergebnis ist von dieser Obergrenze nicht betroffen. Ist der Text länger als 200.000 Zeichen, wartet die Seite, bis du etwa 0,4 Sekunden nicht mehr getippt hast, bevor sie neu rechnet. Eine weitere Längenbegrenzung gibt es nicht, die Geschwindigkeit hängt vor allem vom regulären Ausdruck selbst ab.

Wie schreibe ich das Ersetzungsmuster?

Es gilt die Ersetzungssyntax von JavaScript: $1 und $2 stehen für nummerierte Gruppen, $<name> für eine benannte Gruppe, $& für den gesamten Treffer und $$ für ein wörtliches Dollarzeichen. Lässt du das Muster leer, wird das Gefundene gelöscht. Ohne das Flag g wird nur der erste Treffer ersetzt.

Kann ich die eingebauten Vorlagen für Handynummer, Ausweisnummer usw. unverändert zur Validierung verwenden?

Nur als Ausgangspunkt, nicht als strenge Validierung. Die Handynummer-Vorlage akzeptiert 11 Ziffern, die mit 1 beginnen und deren zweite Ziffer 3 bis 9 ist, und kennt keine Landesvorwahlen. Die Ausweisnummer-Vorlage prüft nur das Format mit 18 Zeichen: Für jeden Monat werden Tage von 01 bis 31 akzeptiert, die letzte Prüfziffer wird nicht verifiziert, und der Gebietscode wird nicht mit echten Regionen abgeglichen. Die Vorlagen für E-Mail und URL decken nur gängige Formen ab, die URL-Vorlage akzeptiert nur http und https. Ein Klick auf eine Vorlage ersetzt den Ausdruck im Feld und setzt die Flags zurück, sodass nur g gesetzt ist.

Wird der eingegebene Text hochgeladen?

Nein. Der reguläre Ausdruck läuft in einem Hintergrund-Thread deines Browsers, Testtext, Ausdruck und Ersetzungsmuster werden nie an einen Server gesendet. Die Seite speichert deine Eingaben auch nicht.