使用正则表达式验证电子邮件地址

时间:2014-01-22 08:49:15

标签: regex email-validation

我正在使用如下所述的电子邮件验证:

private static final String EMAIL_PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-  z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";

在这个模式中,我需要包含(hypen,撇号,下划线,句号)。

例如 - pqr.m.o'abc@xyz.com

请建议

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

^[_A-Za-z'\\.\\!'0-9-\\+]+(\\.[_A-Za-z0-9\\!\\.'-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})

REGEX:^([_A-Za-z'\.\!'0-9-\\+]+(\.[_A-Za-z0-9\\!\\.'-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*\.[A-Za-z]{2,})$

Demo

\.用于.,其中\是转义字符。

<强>更新

要删除连续的特殊字符,您可以使用:

String ar[] ={ "pqr.m.o''abc@xyz.com","pqr.m.o'abc@xyz.com"};
String REGEX = "[_A-Za-z'\\.\\!'0-9-\\+]+(\\.[_A-Za-z0-9\\!\\.'-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})";
Pattern p = Pattern.compile(REGEX);
for(String theString:ar){
   Matcher m = p.matcher(theString);
   while (m.find()) {
        String matched = m.group();
        String regex = "([._!'-])\\1";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(matched);
        if (!matcher.find()) {
            System.out.println(matched);
        }

   }
}