有Java验证邮箱使用正则表达式,很多人都是这样匹配的
String pattern1 = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";  
我不是太清楚,有哪位高手能分段解释一下吗?

解决方案 »

  1.   

    其实这个没什么好解释的,都是最基本的正则语法的堆叠,其中有两处错误,还要注意一下^和$ 分别匹配开始和结束位置
    [a-z0-9A-Z]+ [a-z0-9A-Z]表示任意一个字母或数字,+表示重复一次或多次,整个的意思就是一个以上的字母或数字的组合
    [-|\\.]? -或小数点,|用在这里是错的,用在这里不是表示“或”的关系,而只是表示“|”字符本身,?表示重复0次或一次,整个表达式的意思就是-或.可有可无
    ([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z] 这里表示邮箱名,整体的意思就是由字母和数字组成,中间可以有-和.,但首尾必须是字母或数字,最后一个+我认为用得不对,应该用*,用+就要求至少两位以上字符,一位的就不合法了
    @ 普通字符@
    后面的域名也类似,没什么好解释的如果没有特殊要求,还不如用微软给的这个通用规则的
    String pattern = "^\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
      

  2.   

    在请问一下:
    String pattern = "^\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
    中的:
    ([-+.']\\w+)*  是什么意思?
      

  3.   

    [-+.'] 就是“-”、“+”、“.”、“'”中的一个
    \w 等价于[a-zA-Z0-9_],也就是字母、数字、下划线中的一个
    * 重复0次或任意多次
    ([-+.']\\w+)* 整体就表示由字母、数字、下划线以及“-”、“+”、“.”、“'”中的0个或多个字符组成的字符串,“-”、“+”、“.”、“'”不能出现在结尾
      

  4.   

    正则表达式。。蛋疼哥一般直接网上down。。自己懒得写
      

  5.   

    自己写太乱  还不如直接网上copy