javascript电子邮件验证检查条件问题

时间:2014-01-14 08:13:29

标签: javascript

例如,

<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

像这种带有特殊字符的输入

它没有验证它。

任何好的解决方案?

2 个答案:

答案 0 :(得分:1)

阅读Stop Validating Email Addresses With Complicated Regular Expressions

正如它所说,这封电子邮件:

"Look at all these spaces!"@example.com

完全有效。

结论:

  1. 请勿使用复杂的正则表达式来验证电子邮件。 /@/可以检查大多数用户错误
  2. 通过发送电子邮件并等待回答进行验证
  3. 说真的,用复杂的正则表达式解决问题的任何尝试都注定要失败并且通常会在修复时更糟糕

答案 1 :(得分:0)

验证客户端是非常没有意义的,因为用户可以删除甚至编辑它。您还必须在服务器端进行检查,或者根本不进行验证,只需邮寄!

 var emailfilter = /(([a-zA-Z0-9\-?\.?]+)@(([a-zA-Z0-9\-_]+\.)+)([a-z]{2,3}))+$/;
  if(emailfilter .test(string)) { //mail

}

如果没有邮件并且等待用户点击确认网址,您无法验证电子邮件地址是否存在。 您只能验证它们是否与电子邮件应该匹配的模式相匹配。