自定义电子邮件regexp

时间:2017-04-25 21:51:49

标签: javascript regex

我尝试创建自定义电子邮件regexp

[第一] @ [秒]。[第三]

  • 允许的标志是数字,字母和一些特殊字符(我已经完成了)
  • One @
  • 第一个+第二个长度为1到20个字符。
  • 电子邮件无法以点开头或结尾。彼此相邻的两个或更多点也不是 允许的。
  • 第三个字符串,长度为2或3个字符。

这是我到目前为止所做的:

^(?!\.)(?=[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9]).{2,21}(?:\.[a-zA-Z0-9].{2,3})$

不幸的是,它没有像我预期的那样工作。感谢您的任何提示。

例如,我可以在彼此旁边添加多个点: 测试... s@fm.com

2 个答案:

答案 0 :(得分:1)

永远不要写正则表达式来检查电子邮件。你永远不会做对。举个例子,你说:

  

允许的标志是数字,字母和一些特殊字符(我已经完成了)

这是非常错误的,因为你不会包括像å或ţ这样有效的unicode字符。我也很确定你不知道@是电子邮件第一部分中的有效值。

  

第三个​​字符串长度为2或3个字符。

以及如何匹配以下tld:.info.ninja.website.space

所以,请不要。

供参考:

答案 1 :(得分:0)

以下正则表达式可能对您有帮助。

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

请阅读@zmo发布的答案。