Titel umgeschrieben als: „Regulärer Ausdruck, der bei Verwendung des u-Flags funktioniert, aber nicht bei Verwendung des v-Flags'
P粉684720851
P粉684720851 2023-08-25 15:47:43
0
1
486
<p>Ich habe in diesem Regex-Muster die folgende Konsolenwarnung festgestellt: </p> <pre class="brush:php;toolbar:false;">^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA- Z0-9]+$</pre> <blockquote> <p>Musterattributwert <code>^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+.[a-zA-Z0-9]+$< ;/code> ist mit dem RegExp-Flag <code>u</code> gültig, aber nicht mit dem Flag <code>v</code>: Ungültiger regulärer Ausdruck: <code>/^[a -zA-Z0-9+_.-]+@[a-zA-Z0-9]+</code>.<code>[a-zA-Z0-9]+$/v:</ code> Die Zeichenklasse enthält ungültige Zeichen. </p> </blockquote> <p>Ich weiß nicht, wie ich ein gültiges Regex-Muster erstellen kann, um diese Warnung zu beheben. Könnte jemand bitte den Fehler erklären und wie man ihn beheben kann? </p> <p>Ich versuche, mir die Dokumentation anzusehen, kann aber nicht herausfinden, wie ich sie mit dem Flag <code>v</code> zum Laufen bringen kann. </p>
P粉684720851
P粉684720851

Antworte allen(1)
P粉116631591

问题在于新引入的v标志对转义规则施加了更多限制。由于它允许字符类的减法和交集,因此字符类末尾的字面量-不能保持未转义。

因此,如果使用u标志,就没有这样的限制,而使用v标志,则有这样的限制。参见。

console.log(/^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/u.test("myname@somesite.com"))
console.log(/^[a-zA-Z0-9+_.\-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/v.test("myname@somesite.com"))
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!