Vous avez rencontré un avertissement de console concernant un modèle d'expression régulière avec l'indicateur 'u' valide mais pas avec le drapeau 'v'. Examinons ce problème.
En HTML, l'indicateur 'v' est ajouté automatiquement lors de la compilation d'un objet RegExp dans l'attribut pattern. Cet indicateur applique des restrictions plus strictes sur les caractères qui s'échappent dans les modèles d'expression régulière.
Une différence clé entre les indicateurs 'u' et 'v' est le traitement du '- ' personnage. Avec le drapeau 'u', le caractère '-' peut être utilisé à la fin d'une classe de caractères comme caractère littéral. Cependant, avec l'indicateur 'v', qui permet la soustraction et l'intersection de classes de caractères, le caractère littéral '-' doit être échappé.
L'expression régulière fournie a un '- ' à la fin d'une classe de caractères : [a-zA-Z0-9 _.-]. Pour rendre ce modèle valide avec l'indicateur 'v', vous pouvez échapper le caractère '-' avec une barre oblique inverse : [a-zA-Z0-9 _.-].
Voici une comparaison du comportement avec et sans échappement du caractère '-' :
<code class="js">console.log(/^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/u.test("[email protected]")); // true, using 'u' flag console.log(/^[a-zA-Z0-9+_.\-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/v.test("[email protected]")); // false, using 'v' flag without escaping '-' console.log(/^[a-zA-Z0-9+_.\-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/v.test("[email protected]")); // true, using 'v' flag with escaped '-'</code>
Cet article explique la différence de comportement entre les drapeaux 'u' et 'v' pour modèles d'expression régulière lorsqu'ils sont utilisés avec l'attribut pattern en HTML. Cela met en évidence la nécessité d'échapper au caractère « - » lors de l'utilisation de l'indicateur « v » pour éviter les modèles non valides.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!