2016-09-23 12 views
0

我使用1000hz自舉驗證器來驗證電子郵件輸入,並且我無法在正則表達式@中轉義「@」字符。有沒有人有想法?正則表達式中的@字符

我試過@@,@('@')甚至是十六進制代碼(@)。十六進制工作正常,直到我更新了谷歌Chrome瀏覽器V53,現在它不再有效

這裏是我輸入:

<input type="text" pattern="^[a-zA-Z0-9\.\_%+-]+&#64;[a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4}" required data-error="Enter a valid email address" name="contractor-email" class="form-control" placeholder="e.g. [email protected]" /> 

此外,Chrome瀏覽引發以下錯誤消息:validator.min.js: 94模式屬性值^ [a-zA-Z0-9 ._%+ - ] + @ [a-zA-Z0-9 .-] +。[a-zA-Z] {2,4}不是有效的正則表達式:未捕獲SyntaxError:無效正則表達式:/^[a-zA-Z0-9._%+-][email protected][a-a-Z0-9.-]+.[a-zA-Z]{2 ,4} /:無效轉義

在此先感謝。

+2

爲什麼你需要「逃避」它呢? '@'不是特殊字符。不'pattern =「^ [a-zA-Z0-9 \。\ _%+ - ] + @ [a-zA-Z0-9 \。\ - ] + \。[a-zA-Z] { 2,4}「工作?你甚至可以把它寫成'pattern =「[\ w。%+ - ] + @ [a-zA-Z0-9 .-] + \。[a-zA-Z] {2,4}」'轉義是多餘的,並且'[a-zA-Z0-9_]'='\ w'。此外,該模式默認爲錨定 –

+0

@WiktorStribiżew'@'是剃鬚刀C#mvc中的特殊字符,因此需要轉義它 – vegas2033

+0

然後嘗試用'\\ x40'或'\\ u0040'替換它。不確定雙重轉義'''',也許單個人會做。同時檢查。 –

回答

0

我不知道這是否是最好的做法,而是使用@(「@」)的作品

+0

我以前試過,雖然它適用於大多數瀏覽器,但它不適用於Chrome V53 – vegas2033

+0

這很奇怪,我使用的版本是53.0.2785.116,對我而言它有效 –

0

因此,原來的錯誤是不是從「@」符號,但對我的方式逃脫了我的正則表達式的第一個元素中的字符。以下正則表達式工作:^[a-zA-Z0-9%+-\._]+&#64;[a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4}

感謝那些幫助過的人。