8

我正在使用以下正则表达式

(".+@.+\\.[a-z]+")

位它接受#@#.com 作为有效的电子邮件。我应该使用什么模式?

4

6 回答 6

29

您应该使用 apache-commons 电子邮件验证器。您可以从这里获取 jar 文件。

这是一个如何使用它的简单示例:

import org.apache.commons.validator.routines.EmailValidator;

boolean isValidEmail = EmailValidator.getInstance().isValid(emailAddress);
于 2010-05-04T06:55:51.633 回答
2

这是一个比我能解释得更好的网页:http ://www.regular-expressions.info/email.html (编辑:这似乎有点过时了,因为它引用了已被取代的 RFC 2822由 RFC 5322)

另一个对验证问题有一个有趣的看法:http: //www.markussipila.info/pub/emailvalidator.php

通常,验证电子邮件地址的最佳策略是尝试向其发送邮件。

于 2010-05-04T05:25:00.063 回答
1

如果有人想输入不存在的电子邮件地址,无论您选择什么格式验证,他都会这样做。

检查用户是否拥有他输入的电子邮件的唯一方法是将确认(或激活)链接发送到该地址并要求用户单击它。

因此,不要试图让用户的生活变得更加艰难。检查是否存在@就足够了。

于 2010-05-04T07:26:44.097 回答
1

[A-Z0-9._%+-]+@[A-Z0-9.-]+.[AZ]{2,4}

于 2013-10-29T18:26:54.177 回答
0

我通常使用以下一种:

([a-zA-Z0-9]+(?:[._+-][a-zA-Z0-9]+)*)@([a-zA-Z0-9]+(?:[.-][a-zA-Z0-9]+)*[.][a-zA-Z]{2,})
于 2013-04-03T13:26:59.277 回答
0
import java.util.regex.*;

class ValidateEmailPhone{

    public static void main(String args[]){

        //phone no validation starts with 9 and of 10 digit
        System.out.println(Pattern.matches("[9]{1}[0-9]{9}", "9999999999"));

        //email validation
        System.out.println(Pattern.matches("[a-zA-Z0-9]{1,}[@]{1}[a-z]{5,}[.]{1}+[a-z]{3}", "abcd@gmail.com"));
    }
}
于 2015-06-03T10:36:02.090 回答