import java.util.regex.*;
public class TestMatches { public static void main(String[] args) {
// TODO Auto-generated method stub
String []mails={"[email protected]","ssw@126","[email protected]"};
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

解决方案 »

  1.   

    我的运行结果:
    [email protected]不是个有效的邮件地址!
    ssw@126不是个有效的邮件地址!
    [email protected]是个有效的邮件地址!
      

  2.   

    修改for循环:for (String mail : mails)
            {
                matcher = mailPattern.matcher(mail);
                if (matcher.matches())
                {
                    System.out.println(mail + "是个有效的邮件地址!");
                }
                else
                {
                    System.out.println(mail + "不是个有效的邮件地址!");
                }
            }结果:
    [email protected]是个有效的邮件地址!
    ssw@126不是个有效的邮件地址!
    [email protected]是个有效的邮件地址!
      

  3.   

    我想楼主是吴写了一个地方了,就是:if (matcher == null) {
    matcher = mailPattern.matcher(mail);  //matcher穿的参数是mail
    } else {
            matcher.reset(mail);
    }不过单纯是为了验证邮箱,可以不用涉及到Pattern和Matcher类,笔者奉上稍微简洁的代码:public static void main(String[] args) {
    String[] mails = { "[email protected]", "ssw@126",
    "[email protected]" };
    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 + "不是个有效的邮件地址!");
    }
    }
    }谢谢楼主的分享