首頁  >  問答  >  主體

標題重寫為:"在使用 u 標誌時有效,但在使用 v 標誌時無效的正規表示式"

<p>我在這個正規表示式模式中遇到了下面的控制台警告:</p> <pre class="brush:php;toolbar:false;">^[a-zA-Z0-9 _.-] @[a-zA-Z0-9] \\.[a-zA-Z0- 9] $</pre> <blockquote> <p>Pattern attribute value <code>^[a-zA-Z0-9 _.-] @[a-zA-Z0-9] \.[a-zA-Z0-9] $</code> ; 是使用RegExp <code>u</code> 標誌有效的,但不適用於<code>v</code> 標誌:Uncaught SyntaxError: Invalid regular expression: <code>/^[a-zA-^[a-zA-^[a-zA-^[a-zA-^[a-zA-^[a-zA-^[a-zA-^[a-zA-^[a-zA- Z0-9 _.-] @[a-zA-Z0-9] \</code>.<code>[a-zA-Z0-9] $/v:</code> 字元類別中有無效字元。 </p> </blockquote> <p>我無法看出如何創建一個有效的正規表示式模式來解決這個警告。請問有人能解釋一下錯誤以及如何解決嗎? </p> <p>嘗試查看文檔,但無法找到如何使其適用於 <code>v</code> 標誌。 </p>
P粉684720851P粉684720851421 天前497

全部回覆(1)我來回復

  • P粉116631591

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

    問題在於新引入的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"))

    回覆
    0
  • 取消回覆