用Java验证电子邮件

use*_*996 3 java jsp spring-mvc

我有一个注册表,其中包含姓名,电子邮件和密码.注册时会向用户的电子邮件地址发送确认链接.但在发送链接之前,我需要验证电子邮件地址.我用了:

public static boolean verifyEmailAddress(String regEmail) {
    boolean result = true;
    try {
        InternetAddress emailAddr = new InternetAddress(regEmail);
        emailAddr.validate();
    } catch (AddressException ex) {
        result = false;
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

它显示的任何有效电子邮件,例如yutr6767868@huymail.com,k999////@sdmail.com

我收到的电子邮件request.getParameter并将其存储在regEmail.

究竟我需要做些什么才能让它发挥作用?

小智 5

好的,这里有大约 3 个示例\n http://www.mkyong.com/regular-expressions/how-to-validate-email-address-with-regular-expression/

\n\n

我认为你需要的是

\n\n
package com.mkyong.regex;\n\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\n\npublic class EmailValidator{\n\n  private Pattern pattern;\n  private Matcher matcher;\n\n  private static final String EMAIL_PATTERN = \n               "^[_A-Za-z0-9-]+(\\\\.[_A-Za-z0-9-]+)*@\n               [A-Za-z0-9]+(\\\\.[A-Za-z0-9]+)*(\\\\.[A-Za-z]{2,})$";\n\n  public EmailValidator(){\n      pattern = Pattern.compile(EMAIL_PATTERN);\n  }\n\n  /**\n   * Validate hex with regular expression\n   * @param hex hex for validation\n   * @return true valid hex, false invalid hex\n   */\n  public boolean validate(final String hex){\n\n      matcher = pattern.matcher(hex);\n      return matcher.matches();\n\n  }\n
Run Code Online (Sandbox Code Playgroud)\n\n

}

\n\n

整个组合就是手段,电子邮件地址必须以 \xe2\x80\x9c_A-Za-z0-9-\xe2\x80\x9d 开头,可选后跟 \xe2\x80\x9c。[_A-Za-z0-9-] \xe2\x80\x9c,并以 \xe2\x80\x9c@\xe2\x80\x9d 符号结尾。email\xe2\x80\x99s 域名必须以 \xe2\x80\x9cA-Za-z0-9\xe2\x80\xb3 开头,后跟一级 Tld(.com、.net)\xe2\x80\x9c .[A-Za-z0-9]\xe2\x80\x9d 和可选的第二级 Tld (.com.au, .com.my) \xe2\x80\x9c\\.[A-Za-z ]{2,}\xe2\x80\x9d,其中二级 Tld 必须以点 \xe2\x80\x9c.\xe2\x80\x9d 开头,长度必须等于或大于 2 个字符。

\n\n

例子

\n\n
package com.mkyong.regex;\n\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\n\npublic class EmailValidator{\n\n  private Pattern pattern;\n  private Matcher matcher;\n\n  private static final String EMAIL_PATTERN = \n               "^[_A-Za-z0-9-]+(\\\\.[_A-Za-z0-9-]+)*@\n               [A-Za-z0-9]+(\\\\.[A-Za-z0-9]+)*(\\\\.[A-Za-z]{2,})$";\n\n  public EmailValidator(){\n      pattern = Pattern.compile(EMAIL_PATTERN);\n  }\n\n  /**\n   * Validate hex with regular expression\n   * @param hex hex for validation\n   * @return true valid hex, false invalid hex\n   */\n  public boolean validate(final String hex){\n\n      matcher = pattern.matcher(hex);\n      return matcher.matches();\n\n  }\n
Run Code Online (Sandbox Code Playgroud)\n\n

}

\n


jor*_*deu 5

使用Apache Commons Validator.检查EmailValidator

你可以像这个例子一样使用它:

 EmailValidator validator = EmailValidator.getInstance();
 boolean validEmail = validator.isValid(email);
Run Code Online (Sandbox Code Playgroud)