Heim > Web-Frontend > js-Tutorial > Warum schlägt mein Muster für reguläre Ausdrücke mit dem Flag „v' im HTML-Musterattribut fehl?

Warum schlägt mein Muster für reguläre Ausdrücke mit dem Flag „v' im HTML-Musterattribut fehl?

Barbara Streisand
Freigeben: 2024-10-28 06:26:02
Original
246 Leute haben es durchsucht

Why Does My Regular Expression Pattern Fail with the

Gültigkeit regulärer Ausdrucksmuster mit Unicode-Flags

Probleme mit RegExp-Mustern im HTML-Musterattribut

Wenn Sie ein reguläres Ausdrucksmuster mit dem Flag „v“ in einem HTML-Musterattribut verwenden, kann es zu einem „SyntaxError“-Fehler kommen. Dieser Fehler tritt auf, weil das Flag „v“ beim Kompilieren des Musters in ein RegExp-Objekt automatisch angewendet wird.

Subtraktion und Escapezeichen von Zeichenklassen

Das Flag „v“ führt ein strengere Escape-Regeln, die kein literales „-“-Zeichen am Ende einer Zeichenklasse zulassen. Dies steht im Gegensatz zur „u“-Flagge, bei der es keine solche Einschränkung gibt.

Regex-Muster mit „u“- und „v“-Flags

Bedenken Sie Folgendes Regex-Muster:

^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$
Nach dem Login kopieren
Nach dem Login kopieren

Mit angewendetem „u“-Flag:

<code class="js">console.log(/^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/u.test("[email protected]")); // true</code>
Nach dem Login kopieren

Mit angewendetem „v“-Flag (automatisch im HTML-Musterattribut):

<code class="js">console.log(/^[a-zA-Z0-9+_.\-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/v.test("[email protected]")); // SyntaxError</code>
Nach dem Login kopieren

Lösung

Um den Fehler zu beheben, müssen Sie das „-“-Zeichen am Ende der Zeichenklasse maskieren. Hier ist das korrigierte Muster:

^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$
Nach dem Login kopieren
Nach dem Login kopieren

Dieses Muster sollte jetzt sowohl mit als auch ohne die „v“-Flagge korrekt funktionieren.

Das obige ist der detaillierte Inhalt vonWarum schlägt mein Muster für reguläre Ausdrücke mit dem Flag „v' im HTML-Musterattribut fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage