例如,
<input id="email" name="email" style="width:100%;" type="text">
的javascript,
function validateEmail(email) {
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}
这在大多数情况下都可以正常工作,
但是如果输入是
2★@2.com
像这种带有特殊字符的输入
它没有验证它。
任何好的解决方案?
答案 0 :(得分:1)
阅读Stop Validating Email Addresses With Complicated Regular Expressions。
正如它所说,这封电子邮件:
"Look at all these spaces!"@example.com
完全有效。
结论:
/@/
可以检查大多数用户错误说真的,用复杂的正则表达式解决问题的任何尝试都注定要失败并且通常会在修复时更糟糕
答案 1 :(得分:0)
验证客户端是非常没有意义的,因为用户可以删除甚至编辑它。您还必须在服务器端进行检查,或者根本不进行验证,只需邮寄!
var emailfilter = /(([a-zA-Z0-9\-?\.?]+)@(([a-zA-Z0-9\-_]+\.)+)([a-z]{2,3}))+$/;
if(emailfilter .test(string)) { //mail
}
如果没有邮件并且等待用户点击确认网址,您无法验证电子邮件地址是否存在。 您只能验证它们是否与电子邮件应该匹配的模式相匹配。