检查邮件地址有效性的正则表达式

阿里 阅读:215 2022-06-06 17:05:09 评论:0

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Test {
public static void main(String[] args) {

if(args.length != 1) {
System.out.println("请输入一个参数!");
System.exit(0);
}
Pattern p = Pattern.compile("\\w+@(\\w+\\.)+[a-z]{2,3}");
Matcher m = p.matcher(args[0]);
boolean b = m.matches();
if(b) {
System.out.println("有效邮件地址");
} else {
System.out.println("无效邮件地址");
}
}
}

执行:
C:\java>java TestIT虾米网
有效邮件地址

C:\java>java Test abc@javaweb
无效邮件地址

C:\java>java TestIT虾米网
有效邮件地址

C:\java>java TestIT虾米网
有效邮件地址

C:\java>java TestIT虾米网
无效邮件地址

C:\java>java TestIT虾米网
无效邮件地址

C:\java>java TestIT虾米网
无效邮件地址

C:\java>java TestIT虾米网
有效邮件地址

C:\java>
注解:
"\\w+@(\\w+\\.)+[a-z]{2,3}"

在正则表达式中\w表示任意单词字符,范围是a-z,A-Z,_,0-9,因为在java中\本来就是转义符号,如果只写为\w则会发生歧义,甚至错误,因此要写为:\\w

+的意思就是出现一次以上,所以\\w+就代表任意长度的字符串,但不包括其他特殊字符,如_,-,$,&,*等,呵呵,如果真想进行完全的邮件有效性检查,那正则表达式就不止这么长了,呵呵,有兴趣的可以自己写写看。

后面的我想就简单了,@必须出现,而且只准出现一次,因此直接写成@就行了。

\\w+\\.任意字符串后面加上DOT,大家都知道这是域名的特点,另外就是我写成了(\\w+\\.)+,为什么呢,因为邮件服务器有可能是二级域名,三级域名,或者……如果不带()+的话,IT虾米网有效,而IT虾米网就是无效的了,因此这个是必须的。

最后是[a-z]{2,3},考虑到一般的域名最后不会出现数字,大写也很少见(我想一般应该忽略大小写的),并且最少不少于两位,如cn,us,等,最多不超过三位,如com,org,等,所以就写成了如上形式。


声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

搜索
排行榜
关注我们

一个IT知识分享的公众号