使用正则表达式验证电子邮件字段

时间:2011-04-26 08:56:22

标签: java regex

我需要检查一个字符串(电子邮件地址的本地部分)是否除了:

之外什么都没有
  • 字母(a-zA-Z)
  • 数字(0-9)
  • 下划线
  • 最多一个点(。)

如何使用Java regex

进行操作

示例:a_1_b.ca_b_1应该没问题,但1.a_b.21_a*3应该被丢弃。

5 个答案:

答案 0 :(得分:8)

如果您想验证电子邮件的正确性,您可能只想依靠JavaMail API为您执行此操作。然后,您无需担心将RFC 822规范的详细信息编码为正则表达式。更不用说如果你正在处理电子邮件地址,你可能想要一种简单的方法来发送它们,图书馆也有。您可以通过以下方式验证电子邮件地址是否有效:

try {
    new InternetAddress(email).getAddress();
} catch (AddressException e) {
    // it's not valid
}

答案 1 :(得分:2)

您应该找到更多信息here

答案 2 :(得分:1)

我想,正则表达式[\w]*\.[\w]+|[\w]+应该可以正常工作。

答案 3 :(得分:0)

要检查自己的格式,这应该有效:

Pattern p = Pattern.compile("[a-zA-Z0-9_]+[\\.]{0,1}[a-zA-Z0-9_]*");
  • a_1_b.c应该没问题
  • a_1b也
  • 1.a_b.2和1_a * 3应该被拒绝

http://www.regexplanet.com/simple/index.html

上测试

答案 4 :(得分:0)

假设还必须有一个'@',并且它必须在单个'。'之前(但不是之前),你可以做到

final static private String charset = "[a-zA-Z0-9_]"; // separate this out for future fixes
final static priavte String regex = charset + "+@" + charset + "+\." + charset + "+";

boolean validEmail(String email) {
    return email.matches(regex);
}