电子邮件ID的正则表达式,在@符号后只允许特定数量的点(1-5)

时间:2011-01-28 11:56:02

标签: regex visual-studio-2008

人们已经就Regex进行了很多电子邮件验证的讨论。 我发现许多理想的电子邮件ID正则表达式,但所有这些都验证了超过2个点的电子邮件ID 即。

sangram@ab.cd.ef.gh.ij.kl.mn.op

所有正则表达式都在验证此电子邮件ID,这是不正确的。

根据我的错误的电子邮件ID,我知道可以有sub -sub -sub域,但是不应该允许超过5个点。

我想要控制这个东西,在@符号后面只能输入1到5个点。

那么如何使用正则表达式来完成?

提前致谢。 我希望stackoverflow肯定会解决这个问题。

-Sangram

3 个答案:

答案 0 :(得分:3)

我不确定为什么您认为电子邮件地址中可能存在子域数量的最大值。

无论如何,尝试将有效的电子邮件地址与正则表达式完美匹配是毫无意义的。无论您的正则表达式如何巴洛克式,它都会允许无数的无效电子邮件地址,因为您不知道语法正确的域是否是实际域,或者“正确”的用户名是否实际接受电子邮件。

使用此模式:

/^[^@ ]+@[^@ ]+\.[^@ ]+$/

并完成它。有关此问题的更多信息,请访问humane email validation

答案 1 :(得分:2)

看看这是否有帮助。 (请注意,这是减少验证)

\A[A-Za-z0-9._%+-]+@(?:[A-Za-z0-9-]+\.){1,5}[A-Za-z]{2,4}\Z

答案 2 :(得分:2)

RFC 2822

简化版:

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?