首先,我知道不建议使用正则表达式发送电子邮件,但我必须对此进行测试。
我有这个正则表达式:
\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b
在Java中,我这样做:
Pattern p = Pattern.compile("\\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b"); Matcher m = p.matcher("foobar@gmail.com"); if (m.find()) System.out.println("Correct!");
但是,无论电子邮件是否格式正确,正则表达式都会失败。Eclipse内部的“查找并替换”功能可以在同一个正则表达式下正常运行。
任何想法?
FWIW,这是我们用来验证电子邮件地址的Java代码。正则表达式非常相似:
public static final Pattern VALID_EMAIL_ADDRESS_REGEX = Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE); public static boolean validate(String emailStr) { Matcher matcher = VALID_EMAIL_ADDRESS_REGEX .matcher(emailStr); return matcher.find(); }
工作相当可靠。