0

我正在尝试编写一个检查电子邮件格式的 Java 方法。用户不应被允许在该字段中输入任何其他内容,如下面的硬编码电子邮件值所述。所以布尔方法应该返回假值。

但不知何故,这似乎对我不起作用。在这种情况下,它总是对我来说是真实的。你能纠正我哪里错了吗?或者你能建议我另一种解决方案吗?

public static boolean isValidEmailAddress(String email) {
    boolean result = true;
    email = "testemail@gmail.com" + "\'" + "\"" + "onmouseover=" + "\"" + "alert(20)" + "\"" + "\"";

    try {
        InternetAddress emailAddr = new InternetAddress(email);
        emailAddr.validate();
    } catch (AddressException ex) {
        result = false;
    }
    return result;
}
4

1 回答 1

0

我相信你可以像这样使用正则表达式:

import java.util.regex.Pattern;

public class Email {

    private static final Pattern EMAIL_REGEX = Pattern.compile("^\\w+@\\w+(\\.\\w+){1,2}$");

    public static void main(String[] args) {
        System.out.println(isValidEmailAddress("testemail@gmail.com"));
        System.out.println(isValidEmailAddress("testemail@gmail.co.in"));
        System.out.println(isValidEmailAddress("testemail@gmail.co.in.blah"));
    }

    public static boolean isValidEmailAddress(String email) {
        return EMAIL_REGEX.matcher(email).matches();
    }    
}

输出如下:

true
true
false
于 2013-02-12T05:35:24.207 回答