我正在尝试编写一个检查电子邮件格式的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;
}
答案 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