Probleme mit Musterattributen: Gültigkeit mit regulären Ausdrücken in HTML auflösen
Bei der Verwendung des Musterattributs in HTML kann bei der Angabe ein Fehler auftreten ein Regex-Muster, das mit der Flagge „u“, aber nicht mit der Flagge „v“ funktioniert. Dieser Artikel geht auf das Problem ein und bietet eine Lösung.
Das Problem
Beim Arbeiten mit dem Musterattribut in HTML wird möglicherweise die folgende Konsolenwarnung angezeigt:
Pattern attribute value ^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$ is valid with the RegExp u flag, but not with the v flag: Uncaught SyntaxError: Invalid regular expression: /^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/v: Invalid character in character class.
Erklärung
Das in ECMAScript 2018 eingeführte „v“-Flag wird automatisch angewendet, wenn ein RegExp-Objekt zur Verwendung im Musterattribut von HTML-Elementen kompiliert wird. Dies bedeutet, dass das bereitgestellte Muster in einen regulären Ausdruck mit aktiviertem „v“-Flag umgewandelt wird.
Das „v“-Flag erzwingt zusätzliche Einschränkungen für Escape-Regeln. Im Gegensatz zur Flagge „u“ ist es mit der Flagge „v“ nicht möglich, das Literal „-“ am Ende einer Zeichenklasse ohne Escapezeichen zu belassen. Dies liegt daran, dass das Flag „v“ die Subtraktion und Schnittmenge von Zeichenklassen unterstützt, was zu Konflikten mit einem „-“ ohne Escapezeichen führen kann.
Lösung
Um dieses Problem zu beheben, stellen Sie sicher dass das „-“ am Ende von Zeichenklassen bei Verwendung des Flags „v“ maskiert wird. Die korrigierte Version des Musters wäre beispielsweise:
^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$
Zusätzliche Hinweise
Das obige ist der detaillierte Inhalt vonWarum gibt mein HTML-Musterattribut-Regex den Fehler „Ungültiges Zeichen in Zeichenklasse' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!