2012-09-25 32 views
-2

如何將以下javascript正則表達式轉換爲c#regex?將JavaScript RegEx轉換爲C#RegEx以進行電子郵件驗證

function isValidEmailAddress(emailAddress) { 
       var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i); 
       return pattern.test(emailAddress); 
} 

只是將字符串傳遞到C#Regex類並返回Match不起作用。我認爲字符串需要編輯,但我不是正則表達式專家。

+2

我討厭不得不調試正則表達式。 – Greg

回答

2

在您使用C#時,您應該能夠使用System.Net.Mail.MailAddress類驗證電子郵件地址。您可以使用它像這樣:

public bool IsValidEmailAddress(string emailAddress) 
{ 
    try 
    { 
     MailAddress m = new MailAddress(emailAddress); 
     return true; 
    } 
    catch (FormatException) 
    { 
     return false; 
    } 
} 

有時你可以去沒有正則表達式,特別是如果你不是專家。

+0

這有多全面?我擔心的是它不會那麼詳細,所以服務器端不會那麼強大。對不起,我只是想確保我的電子郵件驗證系統不弱。 – Mark13426

+0

我以爲你想用C#驗證電子郵件地址抱歉。如果不是這種情況,我認爲你應該編輯你的問題來解釋你正在努力實現的目標... –

+0

我試圖驗證客戶端和服務器上的電子郵件地址,所以我使用JavaScript代碼客戶端驗證。 – Mark13426