【问题标题】:Regular Expression for Email with Customized Conditions具有自定义条件的电子邮件的正则表达式
【发布时间】:2021-04-03 19:13:47
【问题描述】:

到目前为止,我已经创建了一个正则表达式

Pattern="^(?=.*[a-zA-Z].*)([a-zA-Z0-9._%+-]+@([a-zA-Z0-9-]+[a-zA-Z0-9-]+(\.([a-zA-Z0-9-]+[a-zA-Z0-9-])+)?){1,4})$"

满足条件为

  1. 所有不应该是数字111@111.111
  2. 邮件ID不应由###@###.###等特殊字符组成
  3. 它应该验证something@somethingsome@some.com

现在我想要一个条件

  1. @ 前后应该只有两个句点,即 表示some.some.some@heven.co.uk 应该是有效的并且 some.some.some.some@heven.co.uk.gov 应该是无效的。

如何针对上述情况修改这个正则表达式?

【问题讨论】:

  • 我同意您不应该尝试验证电子邮件地址,除非作为练习。验证电子邮件地址是有缺陷的,而且根本不起作用,因为有太多的方法可以制作尊重规则的无效地址并拒绝不遵守规则的有效地址。第二个问题是这里的交易破坏者:如果您拒绝一个有效的,您的潜在用户不会为了取悦您而更改电子邮件地址,您将失去他/她。

标签: javascript angular regex validation


【解决方案1】:

如果字符串不应仅由数字组成,您可以使用否定前瞻(?![\d@.]*$) 断言在字符串末尾之前不仅有数字、点和@ 符号。

要匹配 0、1 或 2 个点,您可以使用量词 {0,2}

该模式使用\w 来匹配单词字符,但您可以使用[\w-%] 之类的字符类来更改它以指定允许的字符。

^(?![\d@.]*$)\w+(?:\.\w+){0,2}@\w+(?:\.\w+){0,2}$

Regex demo

请注意,该模式在接受有效电子邮件地址方面非常有限。您还可以使该模式非常广泛,并向用户发送确认链接以进行验证。

【讨论】:

    【解决方案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,}))$/
    

    【讨论】:

      猜你喜欢
      • 2017-09-23
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      • 2020-12-10
      • 1970-01-01
      相关资源
      最近更新 更多