Maison  >  Questions et réponses  >  le corps du texte

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>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粉684720851P粉684720851421 Il y a quelques jours494

répondre à tous(1)je répondrai

  • P粉116631591

    P粉1166315912023-08-26 13:50:46

    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"))

    répondre
    0
  • Annulerrépondre