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