电子邮件验证不起作用

时间:2017-02-07 21:38:12

标签: javascript regex

我有这个简单的电子邮件正则表达式。

/^[a-z]+([\.-_]?[a-z0-9]+)*@([a-z]{3,})+(\.[a-z]{2,3})+$/i;

但是当我使用这个例子: first @ last @ example.com 它仍然可以使用,而且当我从表达式中删除@个字符时:

`/^[a-z]+([\.-_]?[a-z0-9]+)*([a-z]{3,})+(\.[a-z]{2,3})+$/i

它给出了相同的结果。

此表达式允许在电子邮件中至少2个字符之间的无数个 at 符号(即@)!!

这个表达式的问题在哪里?

2 个答案:

答案 0 :(得分:3)

您的模式相当严格,您可能会想到验证电子邮件地址的其他选项,例如type="email",如果它是输入字段验证。

为什么正则表达式匹配@即使你把它拿出来,或者匹配一个带有两个@符号的字符串,也是由[.-_]来匹配很多字符的连字符创建包含@范围。您需要改为使用[._-]

enter image description here

您可以将正则表达式“修复”为

/^[a-z]+([._-]?[a-z0-9]+)*[a-z]{3,}(\.[a-z]{2,3})+$/i

但是,这种正则表达式在现实生活中并不好用。

答案 1 :(得分:0)

你想要这样的东西吗?

/^[a-z\.\-_]+@([a-z]{3,})+(\.[a-z]{2,3})+$/

可能使用符号\.-_你想在正则表达式中使用“。”或“ - ”或“_”,但是你忘了逃避“减号”。

或者你可以使用自己的但是有逃脱:

^[a-z]+([\.\-_]?[a-z0-9]+)*@([a-z]{3,})+(\.[a-z]{2,3})+$

PS:请记住,真正有效的电子邮件地址可能完全不同,并且具有巨大的正则表达式,此外,每个Web服务器都定义了允许的内容和电子邮件中的内容。

相关问题