读书人

验证邮箱的正则表达式有个有关问题好

发布时间: 2013-07-04 11:45:33 作者: rapoo

验证邮箱的正则表达式,有个问题好像,求解


import java.util.regex.*;


public class TestMatches {

public static void main(String[] args) {
// TODO Auto-generated method stub
String []mails={"zpcandzhj@163.com","ssw@126","zp2ss@njue.cn"};
String mailRegEx="\\w{1,20}@\\w+\\.(com|cn|org|net|gov)";
Pattern mailPattern=Pattern.compile(mailRegEx);
Matcher matcher=null;
for(String mail:mails){
if(matcher==null){
matcher =mailPattern.matcher(mailRegEx);
}else{
matcher.reset(mail);
}
if(matcher.matches()){
System.out.println(mail+"是个有效的邮件地址!");
}else{
System.out.println(mail+"不是个有效的邮件地址!");
}

}

}
}

正则表达式 Java
[解决办法]
"\w{1,20}@\w+\.(com
[解决办法]
cn
[解决办法]
org
[解决办法]
net
[解决办法]
gov)"
[解决办法]
修改for循环:
for (String mail : mails)
{
matcher = mailPattern.matcher(mail);
if (matcher.matches())
{
System.out.println(mail + "是个有效的邮件地址!");
}
else
{
System.out.println(mail + "不是个有效的邮件地址!");


}
}



结果:
zpcandzhj@163.com是个有效的邮件地址!
ssw@126不是个有效的邮件地址!
zp2ss@njue.cn是个有效的邮件地址!

[解决办法]
我想楼主是吴写了一个地方了,就是:

if (matcher == null) {
matcher = mailPattern.matcher(mail); //matcher穿的参数是mail
} else {
matcher.reset(mail);
}

不过单纯是为了验证邮箱,可以不用涉及到Pattern和Matcher类,笔者奉上稍微简洁的代码:

public static void main(String[] args) {
String[] mails = { "zpcandzhj@163.com", "ssw@126",
"ysjian_pingcx@163.com" };
String mailRegEx = "\\w{1,20}@\\w+\\.(com
[解决办法]
cn
[解决办法]
org
[解决办法]
net
[解决办法]
gov)";
for (String mail : mails) {
if (mail.matches(mailRegEx)) {
System.out.println(mail + "是个有效的邮件地址!");
} else {
System.out.println(mail + "不是个有效的邮件地址!");
}
}
}

谢谢楼主的分享

读书人网 >J2SE开发

热点推荐