我正在寻找可在GWTJava中使用的通用电子邮件验证器模式。 特别是我需要接受包含以下字符的电子邮件:
à, ç, é, è, ê, î, ï, ô, ù
答案 0 :(得分:2)
根据RFC822或RFC2822(废弃第一个),这些字符集无效。它们虽然是草稿 RFC5335的一部分。
通常,验证电子邮件的正则表达式是个坏主意。他们可以复杂as this one。所以,通常我会尝试在结果和代码复杂性之间找到一个很好的折衷方案。我喜欢这样做:
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
答案 1 :(得分:-2)
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());
}
}