当前位置:编程学习 > C#/ASP.NET >>

正则表达式应用:匹配email地址

     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.,xue@163.com12,2707@qq.com,,xue@yahoo.com.cn,xue@163.com,xue@163.com12";  
           //  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);                         
           }  
         
       }  

 

 
由于没有对长度限制,所以还是会匹配一些错误的邮箱,例如xue@163.coommmmmmmmm,如果需要更精确的匹配还需要进一步的修改
     
        
     域名
   顶级域名
补充:软件开发 , C# ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,