2010-05-25 61 views
4

可能重複:
What is the best regular expression for validating email addresses?普通電子郵件表達

我試過reg表達式

^([a-zA-Z0-9_.-])[email protected]([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+ 

的電子郵件驗證。

因爲我希望用戶允許提交即使是空的電子郵件地址。 因此,我改變了reg前到

(^([a-zA-Z0-9_.-])[email protected]([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+)? 

但這種表達不接受任何驗證的電子郵件地址。

+1

您的表達式將接受任何事情,因爲它可以匹配空字符串(?表示零次或一次),並且每個字符串都「包含」匹配字符串。你想比較整個字符串,所以把^放在開頭,$放在最後 - 這樣就沒什麼,但是你的正則表達式可以在字符串中出現。所以要麼是空的,要麼是完整的模式。 – Konerak 2010-05-25 13:07:29

回答

3

感謝Konerak !!!! 我改變了表達

^(([a-zA-Z0-9_.-])[email protected]([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+)?$ 

,這是爲我工作。

+3

那麼+字符呢? – 2010-05-25 14:11:30

1
+0

我認爲這是不現實的,因爲RFC822包含很多很少需要或當前軟件支持的遺留地址類型。 – kervin 2010-05-25 13:13:22

+0

是的,這是不實際的。更好的是這個,圍繞它的討論:http://www.regular-expressions.info/email.html – 2010-05-25 14:17:37

1

關於這樣做的一些信息可在this page處獲得。

正如該頁面會告訴你的,使用正則表達式傳遞任何和所有符合RFC822的地址是非常困難的。你需要問自己這對你的應用程序有多重要。

就個人而言,我會建議,如果適用,只是要求用戶輸入兩次電子郵件地址,然後用確認電子郵件確認。這樣你就不會冒錯誤地拒絕一個有效的電子郵件地址的風險(對於用戶來說這是一個非常煩人的情況,很可能會讓你的網站失去一些客戶)。