2012-12-20 23 views
3

我在一個網站上工作,在那裏我編寫了以下正則表達式來驗證電子郵件ID並在正則表達式驗證器中使用了正則表達式。正則表達式是電子郵件ID在最後接受多次(.com)

\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 

它接受有效的電子郵件ID,如我所料。但是,當我的質量檢查進行了負面輸入測試時,如[email protected],則允許並說出電子郵件ID是有效的。我已經搜索了每一個地方,幾乎嘗試了所有方面來解決這個問題。任何人都可以幫助我限制上面的郵件ID。實際上,可以接受[email protected]這樣的電子郵件ID,但在.之後的最後一個字符串重複時會出現問題。請幫忙。我正在使用dot net 2005.

+11

[email protected]是格式正確的電子郵件地址。如果你想做適當的檢查,那麼你需要從地址(在這個例子中是gmail.com.com.com.com)提取主機並請求它的DNS MX記錄。如果它不存在,那麼地址是無效的。 –

+0

不,@AleksG我hav試圖在url中輸入gmail.com.com.com.com並顯示糟糕! Google Chrome無法找到我的gmail.com.com.com.com。 –

+0

@SaiKalyanAkshinthala這是因爲域沒有註冊,但在語法上,這是一個有效的域。通過在瀏覽器中使用'gmail.com.com.com.com.com',您確實沒有檢查DNS A的記錄。這並不意味着@AlexsG指出地址格式正確。 –

回答

1

[email protected]語法正確。但是,gmail.com.com.com.com沒有MX記錄,這使得它無法訪問,但無效。

如果你想檢查這個,你應該首先檢查語法(使用那個正則表達式),然後查找主機名的MX記錄。

我還想指出,您使用的正則表達式是真的是不好,並且會使很多有效的郵件地址無效。

+0

感謝您的回覆。它幫助了我。 –

1

RFC822中指定的有效電子郵件格式非常複雜,正則表達式可能不是the best tool來解析和驗證它們。如果您仍想使用正則表達式,則應考慮檢查Validate email address in Javascript?parse email with regex in c#的答案。

TL; DR:不要使用正則表達式來驗證電子郵件地址。而是使用真正的RFC822解析器,並檢查域名是否存在DNS MX記錄,並且可能嘗試通過鏈接發送電子郵件到該地址,該鏈接可用於驗證已收到的電子郵件並且用戶擁有該地址。

+0

@ Sylvain,我已經告訴dat我使用.Net 2005並且我已經檢查了您提供的鏈接中的問題。提供的答案並沒有爲我添加任何線索。 –

+0

@SaiKalyanAkshinthala你被問題標記爲'javascript'。如果您不希望將回應指向JavaScript,請不要使用該標籤。 –

-2

添加下面的表達式檢查電子郵件

ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" 
相關問題