`

java用正则表达式判断电子邮件地址是否合法

阅读更多
如何看一个检查邮件地址有效性呢?
下面给出的这点程序就能满足你的要求了,呵呵

	private boolean isNameAdressFormat(String email){
	        boolean isExist = false;
	     
	        Pattern p = Pattern.compile("\\w+@(\\w+.)+[a-z]{2,3}");
	        Matcher m = p.matcher(email);
	        boolean b = m.matches();
	        if(b) {
	            System.out.println("有效邮件地址");
	            isExist=true;
	        } else {
	            System.out.println("无效邮件地址");
	        }
	        return isExist;
	    }



下面来解析一下它:

"\\w+@(\\w+.)+[a-z]{2,3}"

在正则表达式中\w表示任意单个字符范围是a-z,A-Z,0-9,因为在java中\本来就是转义符
号,如果只写为\w则会发生歧义,甚至错误,因此要写为:\\w
+的意思就是出现一次以上,所以\\w+就代表任意长度的字符串,但不包括其他特殊字符
,如_,-,$,&,*等,呵呵,如果真想进行完全的邮件有效性检查,那正则表达式就不止这
么长了,呵呵,有兴趣的可以自己写写看

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

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

最后是[a-z]{2,3},考虑到一般的域名最后不会出现数字,大写也很少见(我想一般应
该忽略大小写的),并且最少不少于两位,如cn,us,等,最多不超过三位,如com,org,
等,所以就写成了如上形式
分享到:
评论
1 楼 赤道螞蟻 2010-09-06  
你會過濾不存在的mail地址碼? 比如:123@163.com 這樣的address不存在,怎麼判斷

相关推荐

Global site tag (gtag.js) - Google Analytics