Java中电子邮件验证的正则表达式

Posted

技术标签:

【中文标题】Java中电子邮件验证的正则表达式【英文标题】:regular expression for email validation in Java 【发布时间】:2011-02-15 07:39:51 【问题描述】:

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

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

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

【问题讨论】:

***.com/questions/3232/… 电子邮件验证没有好的和现实的正则表达式。语法(在 RFC 5322 中指定)太复杂了。 ***.com/questions/201323/… 雅虎有多大?他们不能正确地检查电子邮件地址的语法,你也不能。 twitter.com/edent/status/11687784947 这个问题必须每月至少问一次或什么的 【参考方案1】:

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

另一个关于验证问题的有趣观点:http://www.markussipila.info/pub/emailvalidator.php

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

【讨论】:

【参考方案2】:

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

下面是一个简单的使用示例:

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

boolean isValidEmail = EmailValidator.getInstance().isValid(emailAddress);

【讨论】:

【参考方案3】:

如果有人想输入不存在的电子邮件地址,他会按照您选择的任何格式验证。

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

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

【讨论】:

【参考方案4】:

我通常使用以下一种:

([a-zA-Z0-9]+(?:[._+-][a-zA-Z0-9]+)*)@([a-zA-Z0-9]+(?:[.-][a-zA-Z0-9]+)*[.][a-zA-Z]2,)

【讨论】:

【参考方案5】:

[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]2,4

【讨论】:

【参考方案6】:
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"));
    

【讨论】:

以上是关于Java中电子邮件验证的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

Java 中的正则表达式电子邮件验证问题

java电子邮件提取正则表达式?

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

JAVA中写邮箱格式的正则表达式,怎么写?

C# 中用于电子邮件验证的最佳正则表达式

在 PHP 中使用正则表达式进行电子邮件验证