使用二级Tld向正则表达式发送电子邮件

时间:2012-09-24 14:05:02

标签: regex email-validation

我正在尝试创建一个EMAIL正则表达式。 这就是我想要实现的目标:

“_ A-Za-z0-9-”,可选后跟“。[_ A-Za-z0-9-]”,并以“@”符号结尾。电子邮件的域名必须以“A-Za-z0-9”开头,然后是第一级Tld(.com,.net)“。[A-Za-z0-9]”,可选后跟第二级Tld( .com.au,.com.my)“ 。[A-Za-z] {2,}“,其中第二级Tld必须以点”。“开头,长度必须等于或大于2个字符。

这是我到目前为止所做的:

([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\w?\.[A-Za-z]{2,})

不适合我。 我希望它验证这些电子邮件:

myname@compgg.com
ffdicot@foobar.com.au
i3dicot@foobar.co.uk

和NOT:

myname@foobar.foo.bar.com

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

别。

这是与RFC2822对应的正则表达式:

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])

最好将其作为单独的函数实现,其中每个函数检查不同的要求......