正则表达式不允许

时间:2014-07-06 08:39:00

标签: javascript php regex email

我需要一个自定义条件来测试用户输入。我使用正则表达式来检查用户的输入是否只是一串数字或有效的电子邮件地址。

目前的Regex如下所示,并有效地淘汰了大多数错误的地址:

/^(([^<>()[\]\\.,;:\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,}))$/

然而,还有一些人错过了拍摄:

  1. 阿拉伯字符
  2. WWWW。 (用户输入wwww.someone@hotmail.com而不是正确的someone@hotmail.com)
  3. .com的错误拼写,例如.cpm,cum,xom,ccom,cim
  4. 我计划添加一个测试来检查输入是否为1-3,但是对于如何实现这一点我有点无能为力。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

没有合适的“适合所有人”的解决方案,但如果排除不常见且非常尴尬的事情(如嵌入式引号),则可以简化这样的正则表达式(忽略大小写):

^[a-z](?:[\.+\-]?\w+)*@[a-z]+(?:[\.\-]?\w+)*$

此表达式应该与几乎所有常见的电子邮件格式相匹配。

具体而言,它将强制执行以下限制:

  • 以信开头。
  • 本地部分可能包含.+-,但不允许他们多次互相关注。
  • 本地部分必须以字母数字字符结尾。
  • 域名必须以字母数字字符开头。
  • 域名可能包含.-,但不允许将其作为最后一个字符。

请注意,这不会验证电子邮件地址的TLD,因为您永远无法真正包含所有这些地址(并且新的网站会定期添加)。

相反,如果对用户提供有效的电子邮件地址非常重要,请使用两步验证流程:注册或注册后,发送带有确认链接的电子邮件,将电子邮件地址标记为有效/正常工作。< / p>