email的組成主要有三部分 1用戶名部分 2@ 3域名部分 1用戶名部分 用戶名一般有數值字母下劃線組成,所以正則表達式為:[\da-zA-Z_]+,也可以寫成[0-9a-zA-Z_]+ 2@ 由於是固定的普通字符,所以正則表達式就是:@ 3域名部分 一般是幾個數字字母的組合接著是點號,會重復一次或者多次,最後是頂級域名(包括國家域名和組織)有字母組成 故正則表達式為:([-\dA-Za-z]+\.)+[a-zA-Z]{2,} ([-\dA-Za-z]+\.)+;匹配字母數值的組合接著一個點號,重復一次或者多次 [a-zA-Z]{2,}:匹配頂級域名,字母組成,至少兩個字符 因此匹配郵箱的正則表達式為:[\da-zA-Z_]+@([-\dA-Za-z]+\.)+[a-zA-Z]{2,} 測試代碼:
private static void Test() { List<string> emailList = new List<string>(); string email = "xue@163.,[email protected],[email protected],,[email protected],[email protected],[email protected]"; // Regex reg2 = new Regex(@"^\da-zA-Z_]+@([-\dA-Za-z]+\.)+[a-zA-Z]{2,}$");驗證email的正則表達式 Regex reg = new Regex(@"(?<email>[\da-zA-Z_]+@([-\dA-Za-z]+\.)+[a-zA-Z]{2,})"); Match m = reg.Match(email); foreach (Match item in reg.Matches(email)) { emailList.Add(item.Groups["email"].Value); } }
由於沒有對長度限制,所以還是會匹配一些錯誤的郵箱,例如[email protected],如果需要更精確的匹配還需要進一步的修改 域名 頂級域名