Regulärer Ausdruck (Regex)

Reguläre Ausdrücke in der Content Management API (CMA) ermöglichen den Musterabgleich mit der RE2-Engine für reguläre Ausdrücke.

Zuvor haben wir die JavaScript-Engine für reguläre Ausdrücke verwendet. Ab dem 21. April 2025 verwenden wir die RE2-Ausdrucks-Engine, um die Sicherheit, Leistung und Wartbarkeit zu verbessern und eine strengere Bewertung regulärer Ausdrücke durchzusetzen.

Zu den wichtigsten Vorteilen der RE2-Engine für reguläre Ausdrücke gehören:

  • Beseitigung von katastrophalem Backtracking: Die RegExp-Engine von JavaScript ermöglicht komplexe Muster, die zu exponentieller Laufzeit (ReDoS-Angriffe) führen können. RE2 verhindert diese Probleme, indem es strengere Regeln durchsetzt.

  • Bessere Leistung und Effizienz: RE2 wird in linearer Zeitkomplexität ausgeführt, um sicherzustellen, dass sich die Auswertung von regulären Ausdrücken nicht auf die Systemleistung auswirkt.

  • Verbesserte Sicherheit: Durch das Verbot bestimmter Muster wie Backreferences und verschachtelter Quantifikatoren mindert RE2 die Risiken, die mit schlecht konstruierten regulären Ausdrücken verbunden sind.

  • Konsistenz und Vorhersehbarkeit: Im Gegensatz zu RegExp von JavaScript bietet RE2 ein deterministischeres Matching-Verhalten, das unerwartetes Verhalten aufgrund von übermäßigem Backtracking verhindert.

Unterstützte Flags

FlagBeschreibung
iGroß-/Kleinschreibung wird nicht berücksichtigt
mMehrzeiliger Abgleich (betrifft ^ und $)
sPunkt (.) entspricht Zeilenumbruchzeichen (\n)
uUnicode-Unterstützung

Nicht unterstützte Funktion

Die folgenden Funktionen werden nicht mehr unterstützt:

  • Global Flag („g“): RE2 unterstützt das Flag „g“ nicht. Stattdessen sollten Nutzer*innen manuell über Übereinstimmungen iterieren.

    Wichtig: Auch wenn RE2 das Global Flag (g) nicht unterstützt, wird es bei der Ausführung ignoriert und bei der Validierung als zulässiges Flag akzeptiert.

  • Lookaheads und Lookbehinds: Lookahead (`(?=...)`) und Lookbehind (`(?<=...)`) sind in RE2 nicht verfügbar.

  • Rückverweise: Rückverweise (`\1`, `\2` usw.) werden in RE2 nicht unterstützt.

  • Verschachtelte Quantifikatoren sind eingeschränkt: Muster mit verschachtelten Quantifikatoren (`(a+)+`) werden nicht mehr akzeptiert.

Das Global Flag (g) wird nicht unterstützt und wird während der Ausführung ignoriert – wie ersetze ich es?

JavaScript ermöglicht es dem Global Flag (g), mehrere Übereinstimmungen zu finden, aber RE2JS unterstützt es nicht.

Lösung:

  • Da unsere Regex-Prüfungen auf 0 im Vergleich zu 1 oder mehr Übereinstimmungen testen, sollte das Entfernen des g-Flags kein Problem sein und hat keine Auswirkungen auf die Validierungsregel des Kunden/der Kundin.

Wichtig: Wir werden keinen Fehler ausgeben, wenn ein g-Flag eingerichtet ist. Wir werden es jedoch bei der Ausführung von Regex im Validierungsschritt nicht berücksichtigen.

Wie repariere ich einen regulären Ausdruck mit Lookaheads oder Lookbehinds?

Wenn Sie Lookbehinds ((?<=...) oder (?<!...)) verwendet haben, müssen Sie Ihren regulären Ausdruck ohne sie neu schreiben.

Beispielkorrektur:

Vorher (JavaScript RegExp, ungültig in RE2)Nachher (RE2-kompatible Version)
foo(?=bar) foo.bar

Was soll ich tun, wenn mein Regex Rückverweise verwendet (\1, \2 usw.)?

Anstatt \1 zu verwenden, erzwingen Sie die Validierungslogik auf der Anwendungsebene.

Beispielkorrektur:

Vorher (JavaScript RegExp, ungültig in RE2)Nachher (RE2-kompatible Version)
(\w+) \1(\w+) \b\w+\b

Wie gehe ich mit verschachtelten Quantifikatoren um?

Verschachtelte Quantifikatoren ((a+)+) können Leistungsprobleme verursachen und werden in RE2JS nicht unterstützt.

Beispielkorrektur:

Vorher (JavaScript RegExp, ungültig in RE2)Nachher (RE2-kompatible Version)
(a+)+b (a{1,100})b

Validierungsbeispiele mit RE2

  • E-Mail-Validierung

Zulässige WerteNicht erlaubte Werte
name@domain.com special%char@domain.com
1-2.3_4@domain.com name@domain
name@sub.domain.comnotanemail.com

RE2-kompatibler regulärer Ausdruck

^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$

  • URL-Validierung

Zulässige WerteNicht erlaubte Werte
http://foo.com/food_food special%char@domain.com
http://userid:password@example.com:8080name@domain

RE2-kompatibler regulärer Ausdruck

^https?:\/\/[^\s/$.?#].[^\s]*$

  • Validierung der US-Telefonnummer

Zulässige WerteNicht erlaubte Werte
1-123-456-7890 1_111-111-1111
1-123.555 111112345
180011145451-111-1a1-1111

RE2-kompatibler regulärer Ausdruck

^1[-.\s]?(\d{3})[-.\s]?(\d{3})[-.\s]?(\d{4})$

So testen Sie Ihren regulären Ausdruck

Wir empfehlen Ihnen, den RE2JS Playground zu verwenden, um Ihre regulären Ausdrücke auf RE2-Kompatibilität zu validieren und zu testen.

Wenn Sie Fragen haben oder Hilfe benötigen, wenden Sie sich an unser Support-Team.