在java中验证电子邮件格式[重复]

Posted

技术标签:

【中文标题】在java中验证电子邮件格式[重复]【英文标题】:Validating email format in java [duplicate] 【发布时间】: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;
  

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

【问题讨论】:

【参考方案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 客户端 != 服务器端

以上是关于在java中验证电子邮件格式[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java如何验证电子邮件地址格式?

验证 Django 中是不是存在电子邮件 [重复]

电子邮件验证jQuery [重复]

以 HTML 格式发送电子邮件 [重复]

在php中验证电子邮件[重复]

在 PHP 中验证电子邮件地址 [重复]