2011-01-28 29 views
2

人們已經在Regex上討論了很多關於電子郵件驗證的內容。 我發現電子郵件ID許多理想的正則表達式,但所有的人都確認有超過2個點 即電子郵件ID的正則表達式,它將允許在@符號後僅顯示多個點(1-5)

[email protected] 

所有的正則表達式要驗證此電子郵件ID這是不正確的電子郵件ID。

根據我的錯誤的電子郵件ID,我明白可以有子子域名,但仍不能超過5個點。

我想控制這個東西,@符號後只能輸入1到5個點。

所以如何使用正則表達式可以做到這一點?

在此先感謝。 我希望stackoverflow可以肯定地解決這個問題。

-Sangram

+2

我不知道實際上.OP是一個頂級域,但如果是這樣,您的示例可能是有效的電子郵件地址。在禁止它的時候沒有用,同時仍然允許hahathereisnodomainhere.com。 – Jens 2011-01-28 12:00:10

+0

是的,這是有效的電子郵件,但我不希望用戶在電子郵件地址後輸入100個點:-)這就是爲什麼我們已經將限制解決爲5個點 – 2011-02-28 13:39:48

回答

2

看看這是否有幫助。 (請注意這是降至驗證)

\A[A-Za-z0-9._%+-][email protected](?:[A-Za-z0-9-]+\.){1,5}[A-Za-z]{2,4}\Z 
3

我不知道爲什麼你認爲在一個電子郵件地址可能的子站點數量最大爲。

無論如何,嘗試將有效的電子郵件地址與正則表達式完美匹配是毫無意義的。無論您的正則表達式如何巴洛克,它都會允許無數無效的電子郵件地址通過,因爲您不知道語法上正確的域是否爲實際域,或者「正確」的用戶名實際上是否接受電子郵件。

使用此模式:

/^[^@ ][email protected][^@ ]+\.[^@ ]+$/ 

,並用它做。更多關於這個在humane email validation

+0

實際上,電子郵件地址的本地部分可能包含空格。 – Jens 2011-01-28 12:57:34

+0

空間.... ??你確定嗎? – 2011-01-28 13:07:52

2

RFC 2822

簡體版:

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])? 
相關問題