MV Tools

Ein echter Regex-Grenzfalllauf

JavaScript-Reguläre Ausdrücke mit Randfällen und sichereren Ersetzungen testen

Ein Ablauf für prüfbare JavaScript-Regex: Absicht in Fälle übersetzen, Engine und Flags prüfen und teure Muster von Produktionseingaben fernhalten.

MV Tools RedaktionAktualisiert 8 Min. Lesezeit

Tool öffnen

Vor dem Muster beschreiben

Treffer, Nicht-Treffer, Ränder, Leerwert, Unicode und Fast-Treffer notieren. Volltreffer oder Gruppe angeben.

Anker, Grenzen, Leerraum, optionale Teile und Maskierungsregeln beeinflussen das Ergebnis. Für JSON, URLs, Datumswerte oder Auszeichnungssprachen mit vollständiger Grammatik sollte ein Parser verwendet werden.

Anker und Mehrzeilenmodus prüfen jede vollständige Zeile ohne Teiltreffer.
Anker und Mehrzeilenmodus prüfen jede vollständige Zeile ohne Teiltreffer.

Gleiche Engine und explizite Flags

Tool nutzt JavaScript RegExp: g, i, m, s, u, y. PCRE, Python, Java, .NET, Datenbank oder Server können abweichen.

g betrachtet Vorkommen, m ändert ^/$, s erweitert Punkt, u Unicode, y fordert genaue Position.

Anker und Mehrzeilenmodus prüfen jede vollständige Zeile ohne Teiltreffer.
Anker und Mehrzeilenmodus prüfen jede vollständige Zeile ohne Teiltreffer.

Gruppen und Ersetzung prüfen

Nummerierte und benannte Gruppen als vorhanden und optional fehlend prüfen.

Mit $&, $1 und $<name> testen. Bei Ersetzung arbeitet die Vorschau global, auch ohne g.

Fast-Treffer und zu lange Zeile bleiben unverändert.
Fast-Treffer und zu lange Zeile bleiben unverändert.

Performance-Risiko vermeiden

Mehrdeutige verschachtelte Wiederholungen wie `(a+)+` oder `(.*)*` können bei langen Fast-Treffern extrem langsam sein.

Die Grenzen von 500 KB und 1.000 Treffern ersetzen weder eine Prozessisolierung noch eine maximale Ausführungszeit. Verwenden Sie kurze problematische Testfälle und geeignete Schutzmaßnahmen auf dem Server.

Fast-Treffer und zu lange Zeile bleiben unverändert.
Fast-Treffer und zu lange Zeile bleiben unverändert.

Wiederholbare Fälle behalten

Muster, Flags, Beispiele und Erwartungen zusammen mit dem Code speichern und in der endgültigen Laufzeitumgebung automatisiert testen.

Alles bleibt lokal, aber Logs, Tokens, E-Mails und signierte URLs bleiben sensibel.

Anker und Mehrzeilenmodus prüfen jede vollständige Zeile ohne Teiltreffer.
Anker und Mehrzeilenmodus prüfen jede vollständige Zeile ohne Teiltreffer.

Häufige Fragen

Warum scheitert es auf dem Server?

Der Server kann eine andere Engine nutzen.

Ändert g die Ersetzung?

Die Vorschau ersetzt global.

Verhindern 500 KB langsame Regex?

Nein. Das Werkzeug setzt keine maximale Ausführungszeit durch.