標題重寫為:"在使用 u 標誌時有效,但在使用 v 標誌時無效的正規表示式"
P粉684720851
P粉684720851 2023-08-25 15:47:43
0
1
545
<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粉684720851
P粉684720851

全部回覆(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"))
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板