如何限制用户输入电子邮件格式以外的任何其他内容

时间:2013-02-12 05:15:20

标签: java email methods

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

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

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;
}

1 个答案:

答案 0 :(得分: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