【问题标题】:Validating email format in java [duplicate]在java中验证电子邮件格式[重复]
【发布时间】:2014-12-12 23:00:27
【问题描述】:

我需要验证以alphabat 开头并以@gmail.com 结尾的电子邮件模式。以下是我的代码。

 public static boolean isValidEmail(String email)
 {
    String endPattern = "@gmail.com";

    if(null == email){
        return false;
    }   
    if(email.length()<10){
        return false;
    }   
    if(!email.endsWith(endPattern)){
        return false;
    }
    String[] strArr = email.split(endPattern);  
    String mailId = strArr[0];  
    if(!Character.isLetter((mailId.charAt(0)))){
        return false;
    }   
    return true;
  }

有没有更好的方法来实现这一点?正则表达式还是更好的代码?

【问题讨论】:

    标签: java regex email-validation


    【解决方案1】:

    使用正则表达式

    public static boolean isValidEmail(String email)
    {
        if (email != null)
        {
            Pattern p = Pattern.compile("^[A-Za-z].*?@gmail\\.com$");
            Matcher m = p.matcher(email);
            return m.find();
        }
        return false;
    }
    

    【讨论】:

      【解决方案2】:

      使用matches方法检查字符串是否以字母开头并以字符串@gmail.com结尾

      System.out.println("foo@gmail.com".matches("[A-Za-z].*?@gmail\\.com"));
      System.out.println("8foo@gmail.com".matches("[A-Za-z].*?@gmail\\.com"));
      

      输出:

      true
      false
      

      【讨论】:

        【解决方案3】:
        public class Main {
        
         public static void main(String[] args) {
        
          String EMAIL_REGEX = "^[\\w-_\\.+]*[\\w-_\\.]\\
          @([\\w]+\\.)+[\\w]+[\\w]$";
          String email1 = "user@domain.com";
          Boolean b = email1.matches(EMAIL_REGEX);
          System.out.println("is e-mail: "+email1+" :Valid = " + b);
          String email2 = "user^domain.co.in";
          b = email2.matches(EMAIL_REGEX);
          System.out.println("is e-mail: "+email2
          +" :Valid = " + b);
           }
         }
        

        【讨论】:

          【解决方案4】:

          根据谷歌,

          电子邮件地址

          • 应该以字母或数字开头
          • 只能包含字母 (a-z)、数字和句点。
          • 应至少为 6 个字符

          正则表达式应该是

          Pattern p = Pattern.compile("^[_A-Za-z0-9]+[\\.[A-Za-z0-9]{5,}@gmail\\.com$");
          

          【讨论】:

          • 除非gmail在某处列出了严格的要求,否则限制太多了。
          • 根据 Google,您只能使用字母 (a-z)、数字和句点。
          • 很好,不知道,有这个要求的链接吗? (供将来参考)
          • 嗯,没有文件。但是,当您创建一个新的电子邮件帐户时,谷歌验证并显示一条消息“请仅使用字母 (a-z)、数字和句点。”
          • 电子邮件地址也可以包含“+”号。
          【解决方案5】:
          package com.mkyong.regex;
          
          import java.util.regex.Matcher;
          import java.util.regex.Pattern;
          
          public class EmailValidator {
          
              private Pattern pattern;
              private Matcher matcher;
          
              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,})$";
          
              public EmailValidator() {
                  pattern = Pattern.compile(EMAIL_PATTERN);
              }
          
              /**
               * Validate hex with regular expression
               * 
               * @param hex
               *            hex for validation
               * @return true valid hex, false invalid hex
               */
              public boolean validate(final String hex) {
          
                  matcher = pattern.matcher(hex);
                  return matcher.matches();
          
              }
          }
          

          【讨论】:

            【解决方案6】:

            这是javascript代码

                     <script>
              function checkEmail()
                  {
                 var feedback="";
               var email=document.getElementById("email").value;
              var count=email.length;
              var atpos=email.indexOf('@');
               var atdot=email.lastIndexOf('.');
              var tld=email.substring(atdot);
                 if(atpos<1 || atdot<1)
               {
               alert("Email is  Not Valid");
                }
                  else if(atpos>atdot)
                 {
               alert("Email is  Not Valid");
                }
               else{
               alert("Email is Valid");
                   }
                  }
            

            【讨论】:

            • Javascript != Java
            • 客户端 != 服务器端
            猜你喜欢
            • 2012-01-04
            • 2011-07-16
            • 1970-01-01
            • 2019-11-12
            • 2011-03-30
            • 2011-07-27
            • 2010-09-14
            • 2011-06-21
            相关资源
            最近更新 更多