电子邮件正则表达不按预期工作

时间:2013-12-21 00:58:24

标签: php jquery regex

我正在使用以下正则表达式来验证电子邮件,只是发现了一些问题而且没有看到问题所在:

/^[a-z0-9_.-]+@[a-z0-9.-]+.[a-z]{2,6}$/i.test(value)

support@tes is invalid
support@test is valid
support@test.c is invalid
support@test.co is valid

2,6用于要求和结束tld在2或6之间,这似乎也不起作用。我确信之前我的工作正常。

4 个答案:

答案 0 :(得分:3)

在正则表达式中,.是一个通配符(表示任何字符)。你需要以\.

的形式逃避它

请记住,正则表达式限制性太强。您可以在地址中包含非字母数字字符,例如'

答案 1 :(得分:1)

我注意到你没有逃脱.。可能还有更多的东西,但是我跳出来了。

答案 2 :(得分:0)

对于使用Regex的电子邮件,这是一个不错的检查

 \w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

但是你可能想读这个。 Using a regular expression to validate an email address

答案 3 :(得分:0)

有很多方法可以正则表达电子邮件地址。取决于你想要它的精确程度和限制程度,但要重新编写一个与你问题最接近的工作正则表达式。这应该有效:

^[\w_.-]+@[\w]+\.[\w]{2,6}$

support@tes - Invalid
support@test - Invalid
support@test.c - Invalid
support@test.co - Valid
supp34o.rt@tes.com - Valid 

但请注意有效电子邮件地址中允许的所有字符 - What characters are allowed in an email address?