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

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

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

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

【问题讨论】:

标签: java regex email-validation


【解决方案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"));
                }
            }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-04-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-07-05
              • 2020-08-11
              • 2014-05-11
              相关资源
              最近更新 更多