【问题标题】:javascript email validation check condition issuejavascript电子邮件验证检查条件问题
【发布时间】:2014-01-14 08:13:28
【问题描述】:

例子,

<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

类似这种带有特殊字符的输入

它不会验证它。

有什么好的解决办法吗?

【问题讨论】:

  • 发送确认邮件。仅在您收到答案时进行验证。完美验证。

标签: javascript


【解决方案1】:

阅读Stop Validating Email Addresses With Complicated Regular Expressions

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

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

完全有效。

结论:

  1. 不要使用复杂的正则表达式来验证电子邮件。 /@/ 可以检查大多数用户错误
  2. 通过发送电子邮件并等待答复进行验证

说真的,任何用复杂的正则表达式解决问题的尝试都注定要失败,而且修复通常会变得更糟

【讨论】:

    【解决方案2】:

    验证客户端毫无意义,因为用户可以删除甚至编辑它。您也必须在服务器端检查它,或者根本不验证,只发送邮件!

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

    }

    如果不发送邮件并等待用户单击确认 URL,则无法验证电子邮件地址是否存在。 您只能验证它们是否与电子邮件应有的模式匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-15
      • 2018-12-22
      • 2019-06-16
      • 1970-01-01
      • 2023-04-06
      • 2011-10-20
      相关资源
      最近更新 更多