Java String中电子邮件的非混淆简单验证

时间:2011-04-15 20:06:10

标签: java string email-validation

我正在尝试找一种简单的方法来检查用户的输入是否符合电子邮件地址的几个条件。我已经阅读了很多有关此主题的主题,而且大多数人似乎也希望验证电子邮件地址。我不打算建立一些超级电子邮件地址验证器/检查器。我正在尝试构建一个检查这些东西的方法:

  1. 用户输入的字符串包含“@”符号。
  2. “@”符号前至少有两个字符。
  3. 有一个'。'在符号之后只有三个字符。域名可以根据需要,但字符串必须以“._ _ _”结尾。如“.com”或“.net”......
  4. 据我所知,这不是一个包罗万象的电子邮件地址检查程序。这不是我想要的。我想要这么简单。我知道这可能是一个常规问题,但即使在阅读了验证电子邮件地址的所有严重疯狂方法之后我也无法弄明白。

    这是我到目前为止的代码:(别担心我已经知道它非常可怜......)

    public static void checkEmail()
    {
        validEmail(emailAddresses);
        if(validEmail(emailAddresses))
        {
    
        }
    }
    
    public static boolean validEmail(String email) {
        return email.matches("[A-Z0-9._%+-][A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{3}");
    }
    

3 个答案:

答案 0 :(得分:12)

javax.mail包只为此提供了一个类:InternetAddress。使用this constructor可以强制执行RFC822。

答案 1 :(得分:2)

不完美,但完成工作。

static boolean validEmail(String email) {
    // editing to make requirements listed
    // return email.matches("[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}");
    return email.matches("[A-Z0-9._%+-][A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{3}");
}

void checkEmails() {
    for(String email : emailAddresses) {
        if(validEmail(email)) {
             // it's a good email - do something good with it
        }
        else {
             // it's a bad email - do something... bad to it? sounds dirty...
        }
    }
}

答案 2 :(得分:0)

int indexOfAt = email.indexOf('@');
// first check : 
if (indexOfAt < 0) { 
  // error
}

// second check :
if (indexOfAt < 2) {
  // error
}

// third check :
int indexOfLastDot = email.lastIndexOf('.');
if (indexOfLastDot < indexOfAt || indexOfLastDot != (email.length() - 4)) {
  // error
}

阅读http://download.oracle.com/javase/6/docs/api/java/lang/String.html以获取String方法的文档。