[英]Email verification regex failing on hyphens
我正在尝试使用此正则表达式验证 email 地址: ^.*(?=.{8,})[\w.]+@[\w.]+[.][a-zA-Z0-9]+$
它接受像a-bc@def.com
这样的电子邮件,但拒绝像abc@de-f.com
这样的电子邮件(我正在使用位于http://tools.netshiftmedia.com/regexlibrary/的工具进行测试)。
谁能解释为什么?
因为在@
你正在寻找字母,数字, _
或者.
,然后是一个时期,然后是字母数字。 你不允许-
在@
之后的任何地方。
您需要将-
添加到其中一个字符类(除了单个文字句号,我将编写\\.
)以允许连字符。
\\w
是字母,数字和下划线。
一.
在由[]
表示的字符类中,只是一个句点,而不是任何字符。
在你的第一个表达式中,你没有限制为\\w
,你使用.*
,这是任何字符的出现次数超过0(实际上可能不是你想要的)。
使用此正则表达式:
var email-regex = /^[^@]+@[^@]+\.[^@\.]{2,}$/;
它将接受a-bc@def.com
以及abc@de-f.com
等abc@de-f.com
。
你也可以在SO上提到一个类似的问题:
希望这可以帮助。
以下正则表达式工作:
([A-Za-z0-9]+[-.-_])*[A-Za-z0-9]+@[-A-Za-z0-9-]+(\.[-A-Z|a-z]{2,})+
相反,您可以使用这样的正则表达式来允许任何电子邮件地址。
^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.