您的位置:首页 > 大数据 > 人工智能

利用正则表达式验证email地址的合法性

2008-02-01 02:42 756 查看
今天用一个晚上的时间学了正则表达式,感觉受益匪浅,现在把看的东西回顾一下,算是复习。正则表达式全名RegularExpressions,是一种专门处理字符串(字符)的语言吧。或许会问:JAVA中的String已经提供了许多处理字符串的方法,为什么还要用正则表达式呢?我的体会是用正则表达式更加的方便和灵活,往往JAVA用一大段代码描述的功能,用正则只要一句话就可以了。
下面我们来看看最简单的正则表达式吧:
 
1.  "."

eg: "aaa".matches("...");
ps: "aaa"是字符串;
 matches()是String类里的方法,返回的是一个boolean类型的值,如果   string和后面正则表达式的内容相匹配返回true,否则false;
 "."表示任意的字符,3个"."就表示3个任意的字符,所以这里的"aaa"和
 后头的"..."匹配成功,true。
2. "[]"

eg: "war3".matches("[a-za-za-z][0-9]");
ps:  "[a-za-za-z]"其实是由三个"[a-z]"组成,[a-z]表示a到z中的一个字母
 [0-9]表示的是一个数字。现在就清楚了,[a-za-za-z][0-9]可以匹配3  个小写字母和一个数字。当然这是非常繁琐的,因为一般都用"{}"。
3. "{}"

eg:     "war3".matches("[a-z]{1,3}[0-9]");
ps:     {1,3}表示可以匹配最多3个英文字母,最少1个英文字母。通过利用{},我 们可以很容易检查相同类型的字符的数量。而JAVA只提供了charAt()  ,subString()和indexOf(),用起来相当不方便。值得一提的是{}还有两  种写法。[a-z]{5}表示5个字母,[a-z]{5,}表示至少5个字母。

4. "/d","/w","/s","/."

eg: "war3_1_21".matches("//w{3}//d_//d//_d{2}");
ps: "/d"表示[1-9]
 "/w"表示[a-zA-Z_0-9]也就是所有大小写字母,数字以及一根下划线。
     看来用"/w"去验证合法的用户名输入是一个不错的主意。
 "/s"表示[ /t/n/x0B/f/r],/r回车,/f换页,/换行
 "/."表示. 为了不和表示任意字符的"."混淆,用了"/"转义.
 而在实际运用中又统统再加了一个"/"这个是JAVA要求的转义字符。
 所以都是两个"//"

5. "+","*","?"

X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次

上头是JDK中的描述,什么意思呢?就比如"[a-z]+"的意思就是有任意多个小写字母,但是不能没有小写字母,我感觉等同于前面讲的"[a-z]{1,}"。再比如"[0-9]*",就是或者没有数字或者有多个数字,就是不能只有一个数字。"+","*","?",常常用在位数不能确定的相同类型的字符。

有了这些知识以后,试着去验证一下一个合法有效的email地址。
这是一个普通的email地址:taochuancheng26@hotmail.com
一般一个合法的email地址必须有一个"@"和一个"."。
而"@"和"."的前后不能为空,必须要有字符。
这如果是给JAVA认证的话,要用一段代码去判断。
而正则表达式则只用一句话:
"taochuancheng26@hotmail.com".matches("//w+@//w+//.//w");

在用户注册的时候,利用正则表达式的强大功能,为检测用户名,密码,email等相关众多信息的合法性提供了一种方便的解决办法。

     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息