【问题标题】:How can I check email address in java [duplicate]如何在java中检查电子邮件地址[重复]
【发布时间】:2021-06-30 04:48:47
【问题描述】:

我正在尝试编写if 条件来检查用户输入的电子邮件地址是否为有效电子邮件。

我该怎么写?

拜托,我想要一个简单而不复杂的方法

我的方法是

  public void setStudentEMail(String StudentEMail)
{
     this.StudentEMail=StudentEMail;    
}
 
  public String getStudentEMail()
{
    return this.StudentEMail;
}

【问题讨论】:

标签: java if-statement


【解决方案1】:

您可以使用Javahttps://javaee.github.io/javamail/的官方邮箱包。它有一个内置的方法来验证电子邮件地址。您不必自己维护正则表达式。

public boolean isValidEmail(String email) {
   boolean valid = true;
   try {
      InternetAddress emailAddr = new InternetAddress(email);
      emailAddr.validate();
   } catch (AddressException e) {
      valid = false;
   }
   return valid;
}

【讨论】:

  • 您链接的网站已经过时,最新的是 - 在更名为 JakartaMail 并转移到 Eclipse 基金会之后 - eclipse-ee4j.github.io/mail
【解决方案2】:

一个简单但不完美的方法是

public boolean isValid(String email) {
    if (email == null) return false;
    int at = email.indexOf("@");
    if (at < 0) return false;
    int dot = email.lastIndexOf(",");
    return at < dot;
}

但是,您将需要一种更复杂的方法才能使其完美运行,例如

public static boolean isValid(String email)
{
    String emailRegex = "^[a-zA-Z0-9_+&*-]+(?:\\."+
                        "[a-zA-Z0-9_+&*-]+)*@" +
                        "(?:[a-zA-Z0-9-]+\\.)+[a-z" +
                        "A-Z]{2,7}$";
                          
    Pattern pat = Pattern.compile(emailRegex);
    if (email == null)
        return false;
    return pat.matcher(email).matches();
}

https://www.geeksforgeeks.org/check-email-address-valid-not-java/

【讨论】:

  • 根据RFC 5322[a-zA-Z0-9!#$%&amp;'*+/=?^_{|}~-]. Of course in practice many sites fail with characters such as $`或',邮件的本地部分也可以包含许多其他字符部分。
  • 但问题明确指出“我想要一个简单的方法而不是复杂的”!!!编写代码来验证电子邮件地址而不是使用经过验证的 API 似乎是不合适的(除非有特殊的验证要求)。
猜你喜欢
  • 2011-08-17
  • 1970-01-01
  • 1970-01-01
  • 2020-06-25
  • 1970-01-01
  • 2019-12-17
  • 2019-05-19
  • 2016-08-20
相关资源
最近更新 更多