-1

我正在寻找可以在 GWTJava 中使用的通用电子邮件验证器模式。特别是我需要接受包含以下字符的电子邮件:

à, ç, é, è, ê, î, ï, ô, ù
4

2 回答 2

2

根据 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
于 2013-07-22T10:29:08.223 回答
-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());


}

}
于 2013-07-22T09:46:22.563 回答