2017-01-11 52 views
1

我有一個RFC 5322兼容的電子郵件正則表達式模式來驗證我的輸入。 這適用於所有的瀏覽器,而Chrome告訴我在控制檯上出現以下錯誤:正則表達式在Chrome模式輸入驗證

Pattern attribute value ^[-a-z0-9~!$%^&*_=+} 
{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_] 
[-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz 
|com|coop|edu|gov|info|int|mil|museum|name 
|net|org|pro|travel|mobi|[a-z][a-z])|([0-9] 
{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})) 
(:[0-9]{1,5})?$ 
is not a valid regular expression: 

Uncaught SyntaxError: Invalid regular expression: 
/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^ 
&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z 
0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov 
|info|int|mil|museum|name|net|org|pro|travel 
|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\. 
[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/ 

Invalid escape 

我只是找不到什麼塊有這個無效的逃避。

+1

無需轉義單引號。 –

+0

請分享您的代碼 – RaR

+0

@WiktorStribiżew,謝謝,解決了這個問題! – Douglas

回答

0

由於Chrome pattern屬性會自動添加u修飾符,因此將應用更嚴格的正則表達式語法規則。基本上,你不能逃避任意的符號。如果這個符號不是一個特殊的正則表達式元字符,你不能逃避它,否則你會得到這個錯誤。

因此,在你的情況下,單撇號不能逃脫。在它之前刪除轉義的反斜槓,並且正則表達式將再次在每個瀏覽器中運行。

+0

完美的技術解釋!謝謝@Wiktor,這個工作就像一個魅力! – Douglas