2009-11-10 32 views
40

有誰知道ASP.NET中的電子郵件驗證器使用的正則表達式是什麼?ASP.NET電子郵件驗證器正則表達式

+0

我不認爲有是一個可以使用的內置「EmailValidator」控件。您可以使用RegularExpressionValidator推出自己的產品。 – 2009-11-10 19:31:20

+0

不是問題的答案 - 但這裏是我使用的簡單驗證。 '+ @ + \ .. +'。我堅持這一點,因爲許多電子郵件不符合標準,但仍然有效。 – Lijo 2012-12-19 13:53:07

回答

85

下面是使用的RegularExpressionValidator在.NET

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

順便說互聯網電子郵件地址的正則表達式,如果你把一個的RegularExpressionValidator在頁面上,轉到設計視圖有是可用於從.NET提供的表達式列表中選擇的ValidationExpression字段。一旦你選擇了你想要的表達式,就有一個驗證表達式:包含用於驗證器的正則表達式的文本框

+2

這是如何在ASP.NET的電子郵件驗證程序中完成的?這可以匹配'[email protected]_._'......我期望更多的東西。 – 2009-11-10 19:30:16

+0

@Bart自己檢查一下。我告訴過你我是怎麼找到它的 – 2009-11-10 19:31:42

+0

當你只發布你的正則表達式時,我發佈了我的評論,所以不,你沒有告訴我你是如何找到它的。此外,現在我已經閱讀了您的其他文章,我(無人經歷.NET並且無法測試它)無法訪問您可能試圖指出的文檔。無論如何,我對使用這種天真的正則表達式感到有點驚訝。我沒有興趣自己檢查一下。 – 2009-11-10 19:37:32

15

電子郵件地址很難用單純的正則表達式正確驗證。 Here是一個漂亮可怕的正則表達式,據推測實施RFC822, chapter 6,有效的電子郵件地址的規範。

不是一個真正的答案,但也許與你想要完成的事情有關。

+3

史詩般的正則表達式鏈接+1 – kd7 2009-11-10 19:41:35

+2

這個正則表達式是純粹的迷人 – 2013-08-29 23:22:46

24

我不再驗證電子郵件地址格式(好吧,我檢查以確保有一個符號和一段時間後)。原因是什麼說格式正確的地址甚至是他們的電子郵件?您應該向他們發送電子郵件並要求他們點擊鏈接或驗證代碼。這是驗證電子郵件地址的唯一真實方法是有效的,而且一個人實際上能夠收到電子郵件。

+1

非常贊同! +1 – 2009-11-10 19:46:08

+17

電子郵件地址驗證不是爲了防止用戶輸入不屬於他們的地址。它的目的是防止用戶誤操作地址。所以基本上你所說的是你不能完全防止人們闖入你的房子,而不是鎖門,只是保持關閉就足夠了。 – 2012-06-30 20:41:45

+0

你可能與'簡單的驗證提供了一個樣本@'和'.'(或參照http://stackoverflow.com/questions/742451/what-is-the-simplest-regular-expression-to-validate- emails-to-not-accept-them-bl) – Lijo 2012-12-19 13:55:01

11

我們可以使用的RegularExpressionValidator驗證電子郵件地址格式。您需要在RegularExpressionValidator的ValidationExpression屬性中指定正則表達式。所以它看起來像

<asp:RegularExpressionValidator ID="validateEmail"  
    runat="server" ErrorMessage="Invalid email." 
    ControlToValidate="txtEmail" 
    ValidationExpression="^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$" /> 

此外,在按鈕或鏈接的事件處理程序中,您需要檢查!Page.IsValid。 檢查樣本代碼在這裏:sample code

此外,如果你不想使用的RegularExpressionValidator你可以寫簡單的驗證方法和usinf Regex類System.Text.RegularExpressions命名空間中的那個方法。

檢查例如:

example

+0

-1,用於提供一種解決方案,將錯誤地將有效電子郵件標識爲不良。比較你的正則表達式:http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html你應該添加一個警告,這個解決方案太簡單了。 – oligofren 2015-11-17 13:03:15

1

除了與一個驗證客戶端驗證,我也建議做服務器端驗證也是如此。

bool isValidEmail(string input) 
{ 
    try 
    { 
     var email = new System.Net.Mail.MailAddress(input); 
     return true; 
    } 
    catch 
    { 
     return false; 
    } 
} 
0

這是爲了驗證電子郵件地址的最佳表達:

^(?("")("".+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$ 

我們可以利用在此的RegularExpressionValidator表達式驗證電子郵件地址格式:

<asp:RegularExpressionValidator ID="validateEmail"  
    runat="server" ErrorMessage="Invalid email." 
    ControlToValidate="txtEmail" 
    ValidationExpression="^(?("")("".+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$" /> 
相關問題