【问题标题】:Custom email regexp自定义电子邮件正则表达式
【发布时间】:2017-09-23 02:42:22
【问题描述】:

我正在尝试创建自定义电子邮件正则表达式

[第一]@[第二].[第三]

  • 允许的符号是数字、字母和一些特殊字符(我已经做到了)
  • 一个@
  • First+second 的长度为 1 到 20 个字符。
  • 电子邮件不能以点开头或结尾。相邻的两个或多个点也不是 允许。
  • 第三个字符串长度为 2 或 3 个字符。

这是我目前所拥有的:

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

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

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

【问题讨论】:

标签: javascript regex


【解决方案1】:

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

允许的符号是数字、字母和一些特殊字符(我已经做到了)

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

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

如果匹配以下 tlds:.info.ninja.website.space

所以请不要。

供参考:

【讨论】:

  • 这就是我在标题“自定义电子邮件”中所说的原因。它不必符合一般标准。无论如何感谢您的回答。
【解决方案2】:

遵循正则表达式可能会对您有所帮助。

^(([^<>()\[\]\\.,;:\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 发布的答案。

【讨论】:

  • 我所说的一个例子:这个正则表达式不匹配 foo@example.website 或多个点的东西 foo.....bar@example.com 两者都是完全有效的电子邮件地址。
猜你喜欢
  • 2021-04-03
  • 1970-01-01
  • 2021-11-09
  • 2011-12-28
  • 2012-01-02
  • 2015-12-03
相关资源
最近更新 更多