【问题标题】:Disallow hyphens in e-mail [duplicate]不允许在电子邮件中使用连字符 [重复]
【发布时间】:2019-06-13 11:12:56
【问题描述】:

我有一个用于电子邮件验证的正则表达式,其构造如下:

const emailRegexp = /[a-z0-9._%+]+@[a-z0-9]+(\.[a-z]{2,10}){1,2}$/;

例子:

aaa@aaa-aaa.com - 对于这封电子邮件,验证有效,它阻止用户提交表单 aa-aa@aaa.com - 对于这封电子邮件,验证不起作用。

如何禁止此特定“emailRegexp”变量中的所有连字符?

【问题讨论】:

  • 在模式前加上^
  • 但是……你为什么要disallow valid emailscoca-cola.com 是一个真实存在的域。
  • 这可能值得注意.... 有效的电子邮件地址可以包含连字符任何使用正则表达式验证电子邮件地址的尝试都是有缺陷的(包括您可以在网上找到的荒谬的 1000 多个字符“符合 RFC”的正则表达式);我的建议一直是尽可能使用最松散的正则表达式(例如^[^@]+@[^@]+$),然后 - 如果你真的需要 - 通过向他们发送 验证电子邮件 确保地址真正有效(并确认链接)
  • @TomLord 确实如此。问题在于,即使您以某种方式发现电子邮件按照规范有效,这并不意味着它存在。与使用包含连字符、撇号、加号或许多开发人员认为“不值得”的其他所有内容的电子邮件注册相比,用户使用不存在的电子邮件进行注册是一个更糟糕的问题一封电邮。如果您想要他们的电子邮件,请联系他们,因此唯一重要的验证是“您可以通过此电子邮件联系用户吗”。

标签: javascript regex validation email


【解决方案1】:

在模式的开头放一个'^',这会断言字符串开头的位置。

^[a-z0-9._%+]+@[a-z0-9]+(\.[a-z]{2,10}){1,2}$

【讨论】:

    猜你喜欢
    • 2020-05-06
    • 2015-06-20
    • 2011-07-27
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 1970-01-01
    相关资源
    最近更新 更多