2013-07-29 52 views
0

我有一個JS正則表達式來檢查電子郵件地址的有效性。這一切都很好,但最近我注意到它允許星號*作爲電子郵件的有效部分。我知道一些用戶可能會使用我不希望我的應用程序允許這樣做。JS Regex for email允許星號

到目前爲止的代碼是:

RegExp = /^((([a-z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+(\.([a-z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+)*)@((((([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.))*([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.)[\w]{2,4}|(((([0-9]){1,3}\.){3}([0-9]){1,3}))|(\[((([0-9]){1,3}\.){3}([0-9]){1,3})\])))$/ 

請,告知如何改變這種做法,*成爲用戶提供的電子郵件無效字符。

+1

爲什麼你不希望你的應用程序允許? – Darkzaelus

+1

實際上,我的是一個大學管理應用程序,其中的數據是從掃描的OMR表格中讀取的,關於該OMR軟件的事情是它讀取了空白圓圈作爲'*',因此大多數用戶的電子郵件都與此相關,因此是錯誤的。現在,當他們編輯,我想避免這個問題.. – coder101

+2

確定這是有效的:)通過經驗,大多數人只是想限制用戶允許的電子郵件格式,爲什麼我問 – Darkzaelus

回答

3

只需從您的正則表達式中刪除已轉義的星號。那麼你的正則表達式將變爲:

RegExp = /^((([a-z]|[0-9]|!|#|$|%|&|'|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+(\.([a-z]|[0-9]|!|#|$|%|&|'|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+)*)@((((([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.))*([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.)[\w]{2,4}|(((([0-9]){1,3}\.){3}([0-9]){1,3}))|(\[((([0-9]){1,3}\.){3}([0-9]){1,3})\])))$/ 

[編輯]

不要取下所有星號。只刪除轉義的星號。