我正在寻找可以在 GWTJava 中使用的通用电子邮件验证器模式。特别是我需要接受包含以下字符的电子邮件:
à, ç, é, è, ê, î, ï, ô, ù
我正在寻找可以在 GWTJava 中使用的通用电子邮件验证器模式。特别是我需要接受包含以下字符的电子邮件:
à, ç, é, è, ê, î, ï, ô, ù
根据 RFC822 或RFC2822(已废弃第一个),这些字符无效。它们虽然是RFC5335草案 的一部分。
通常,验证电子邮件的正则表达式是一个坏主意。他们可以像这个一样复杂。所以,通常我会尝试在结果和代码复杂性之间找到一个好的折衷方案。我喜欢这样做:
try {
new InternetAddress(email, true);
} catch (AddressException e) {
return false;
}
InternetAddress
是包含在 JavaMail 包中的一个类,true
参数告诉它执行严格的验证。它工作得很好。将其放入官方 JavaMail 包中,很可能实现与新版本保持同步。
这些字符在发送者的名字中是有效的,这个代码会处理它。
àndreas <andreas@gmail.com> // pass validation
àndreas@gmail.com // don't pass validation
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ValidatorUtil {
private static final String PATTERN_EMAIL = "^[_A-Za-z0-9-\\+ HERE PUT YOUR ADITIONAL CHARACTERS]+(\\.[_A-Za-z0-9-]+)*@"
+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
/**
* Validate given email with regular expression.
*
* @param email
* email for validation
* @return true valid email, otherwise false
*/
public static void main(String args[])
{
String email = "aáaaa@gmail.com";
// Compiles the given regular expression into a pattern.
Pattern pattern = Pattern.compile(PATTERN_EMAIL);
// Match the given input against this pattern
Matcher matcher = pattern.matcher(email);
System.out.println(matcher.matches());
}
}