有Java验证邮箱使用正则表达式,很多人都是这样匹配的
String pattern1 = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
我不是太清楚,有哪位高手能分段解释一下吗?
String pattern1 = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
我不是太清楚,有哪位高手能分段解释一下吗?
[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+)*$";
String pattern = "^\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
中的:
([-+.']\\w+)* 是什么意思?
\w 等价于[a-zA-Z0-9_],也就是字母、数字、下划线中的一个
* 重复0次或任意多次
([-+.']\\w+)* 整体就表示由字母、数字、下划线以及“-”、“+”、“.”、“'”中的0个或多个字符组成的字符串,“-”、“+”、“.”、“'”不能出现在结尾