0

我正在尝试创建一个 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

并不是:

myname@foobar.foo.bar.com

有什么建议么?

4

1 回答 1

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])+)\])

最好将其实现为单独的功能,每个功能检查不同的要求......

于 2012-09-24T14:25:28.500 回答