2014-10-04 84 views
0

前段時間我發佈了這個問題PHPMailer Character ñ on recipient address並得到了我的答案。儘管如此,我決定繼續使用PHPMailer,但我無法做任何關於這個事情的信息,但是排除了帶有ñ字符的電子郵件,我使用這個正則表達式在javascript中使用這個正則表達式驗證電子郵件,很好,但我希望它也能排除包含字符 - 的電子郵件。Javascript正則表達式驗證電子郵件與ñ字符

我很難理解正則表達式,一旦我在這裏找到了一個非常好的解釋,但我失去了鏈接。總之,這裏是我的功能,我用它來驗證電子郵件:

function isEmail(email){ 
var re = /^(([^<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
return re.test(email); 
} 

要排除ñ,我想我能做到這一點是這樣的:

function isEmail(email){ 
var re = /^(([^ñÑ<>()[\]\\.,;:\[email protected]\"]+(\.[^<>()[\]\\.,;:\[email protected]\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
return re.test(email); 
} 

哪像電子郵件工作lauromuñ[email protected],但是,如果我在名稱和姓氏之間添加一個點,如lauro.muñ[email protected],它就會變得有效。

如何修復正則表達式以在電子郵件中的任何位置捕獲?

+0

我希望它是無效的,我想lauromuñ[email protected]和lauro.muñ[email protected]有同樣的結果。如果你輸入lauromuñ[email protected]它沒有匹配,我想lauro.muñ[email protected]必須符合ethier。 – Lauro182 2014-10-04 01:01:03

+0

你說你不想匹配名稱中或其他任何部分有'ñ'的電子郵件。 – 2014-10-04 01:02:58

回答

3

正則表達式在眼睛上很不自在,我會推薦用不同的工具解析。對此的一個解決方法是在你的模式之前的字符串^錨的開始之後添加負向預覽。

var re = /^(?!.*[ñÑ]) ... $/ 

Live Demo

+0

正是我在找的東西。非常感謝! – Lauro182 2014-10-04 01:04:27

相關問題