Java

本类阅读TOP10

·使用MyEclipse开发Struts框架的Hello World!(录像1)
·hibernate配置笔记
·AOP编程入门--Java篇
·linux下Tomcat 5.0.20 与 Apache 2 安装/集成/配置
·在win2003下整合了整合Tomcat5.5+ apache_2.0.53+ mod_jk_2.0.47.dll
·构建Linux下IDE环境--Eclipse篇
·Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台)
·ASP、JSP、PHP 三种技术比较
·Tomcat5.5.9的安装配置
·AWT GUI 设计笔记(二)

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
一个检查邮件地址有效性的正则表达式程序

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

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("无效邮件地址");
        }
    }
}
执行:javac Test.java
          java  Test abc@def.njupt.edu.cn
输出:有效邮件地址

执行:java Test abc@def
输出:无效邮件地址

注解:
"\\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,
等,所以就写成了如上形式


刚开始学习正则表达式,呵呵,很多想法也比较幼稚,稍微复杂一点的就搞不好了,还
望各位牛人多多指点:-)



相关文章

相关软件