Titre réécrit comme : "Expression régulière qui fonctionne lors de l'utilisation du drapeau u, mais pas lors de l'utilisation du drapeau v"
P粉684720851
P粉684720851 2023-08-25 15:47:43
0
1
542
<p>J'ai rencontré l'avertissement de console suivant dans ce modèle d'expression régulière : </p> <pre class="brush:php;toolbar:false;">^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA- Z0-9]+$</pré> <blockquote> <p>Valeur de l'attribut du motif <code>^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+.[a-zA-Z0-9]+$< ;/code> est valide en utilisant l'indicateur RegExp <code>u</code>, mais pas avec l'indicateur <code>v</code> -zA-Z0-9+_.-]+@[a-zA-Z0-9]+</code>.<code>[a-zA-Z0-9]+$/v:</ code> Il y a des caractères invalides dans la classe de caractères. </p> </blockquote> <p>Je ne vois pas comment créer un modèle d'expression régulière valide pour résoudre cet avertissement. Quelqu'un pourrait-il expliquer l'erreur et comment la corriger ? </p> <p>J'essaie de consulter la documentation mais je ne trouve pas comment la faire fonctionner avec l'indicateur <code>v</code> </p>
P粉684720851
P粉684720851

répondre à tous(1)
P粉116631591

Le problème est que le v标志对转义规则施加了更多限制。由于它允许字符类的减法和交集,因此字符类末尾的字面量- nouvellement introduit ne peut pas rester sans échapper.

Donc, si vous utilisez le drapeau u标志,就没有这样的限制,而使用v, il existe une telle restriction. Voir.

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"))
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal