2013-08-16 46 views
2

我正在使用RegEx "^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+[.])*(\.[a-zA-Z]{2,17})$"驗證電子郵件,但我的潛在客戶希望按照Microsoft標準進行驗證。所以我需要遵循將IP地址添加到電子郵件驗證RegEx

http://msdn.microsoft.com/en-us/library/01escwtf(v=vs.100).aspx

在一切工作正常,按照標準,但仍我與

有效面臨的問題:js#[email protected] 有效期:j_9 @ 129.126.118.1]

上面提到的郵件ID仍然返回爲無效。我嘗試使用該頁面中使用的正則表達式

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

但我在服務器頁面中出現錯誤。儘管我在驗證Expression中粘貼了表達式,但它無法接受字符。

注意:我正在使用ASP.Net驗證器來驗證電子郵件。

+0

試過,也正則表達式,而不能讓它在任何的工作Ť他電子郵件:http://regexr.com?35vs5 – jerone

+0

是啊你是對的。這個「^ [_ a-zA-Z0-9 - ] +(\。[_ a-zA-Z0-9 - ] +)* @ [a-zA-Z0-9 - ] +(\。[a-zA-Z0-9 - ] + [。])*(\。[a-zA-Z] {2,17})$「工作,但不是爲上述提到的兩個電子郵件.. – codebot

回答

1

說明

要在您的示例文本匹配這兩個電子郵件地址,我想我會重寫你這樣的表達:

[A-Z0-9._%#+-][email protected](?:[A-Z0-9.-]+\.[A-Z]{2,4}|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\])

enter image description here

如果你正在尋找要使用它來驗證可能只包含電子郵件的字符串,則可以添加字符串錨點的開始/結尾^$

Live Demo

示例文字

Valid: js#[email protected] Valid: [email protected][129.126.118.1] 

匹配

[0][0] = js#[email protected] 
[1][0] = [email protected][129.126.118.1] 
+0

感謝Denomales,它真的幫助我.on頂部它,我正在測試MS站點中的電子郵件格式http://msdn.microsoft.com/en-us/library/01escwtf( v = vs.100).aspx 因爲我使用兩個正則表達式,一個是[A-Za-z0-9 ._] + @ \ [(?:(?: 25 [0-5] | 2 [0 -4] [0-9] | [01] [0-9] [0-9])\){3}(?: 25 [0-5] |?2 [0-4] - [O- 9] | [01] [0-9] [0-9]?)\],另一個是[a-zA-Z_0-9# - ] +(\。[a-zA-Z0-9-] +)* @ [A-ZA-Z0-9 - ] +(\ [A-ZA-Z0-9 - ]。[·] +)*(\ [A-ZA-Z] {2,17}) *(\。[a-zA-Z] {2,17})。很好,使用兩個if循環來獲得驗證,或者我可以縮小到一個 – codebot