是否有任何正则表达式来验证不允许 .com.com
的电子邮件,即 example@example.com.com 但允许 .com.uk
?
我已经粘贴了当用户输入 .com.com
时应返回 false 的代码。谁能验证我下面的代码吗?
String ePattern = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
Pattern p =Pattern.compile(ePattern);
Matcher m = p.matcher(studentemail);
b= m.matches();
if(!b) {
eMsg.addError("email must be in formate: example@example.xxx / example@example.xx");
request.setAttribute("errorMessage", eMsg);
requestDispatcher = request.getRequestDispatcher("/addrecord.jsp");
requestDispatcher.forward(request, response);
return;
}
else {
System.out.println("valid email id");
}
最佳答案
在大多数情况下,此类正则表达式不限于 Java(仅当使用 Java 正则表达式引擎不支持的特殊功能时)。除此之外,如果您只想匹配 @example.xx
您应该调整正则表达式的第二部分(尤其是该部分的第一组)。但请注意,像 xxx.co.uk
这样的域名可能在那时无效。
此外,xx.com.com
可能是无效域,但也可能不是(至少在其他组合中,例如de.de
是一个有效的域),因此您可能希望允许这样做,仅测试特定组合或限制此类域的使用。
但是,根据您的用例,发送确认电子邮件可能会更好,因为正则表达式可以告诉您它看起来正确,但可能仍然存在错误。
关于java - java中的电子邮件验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40505122/