电子邮件地址的正确正则表达式是什么?

时间:2009-01-16 15:16:08

标签: regex email

重复Using a regular expression to validate an email address


网上似乎有很多不同的变种,并且想知道是否有明确的答案?

最好使用正则表达式的.net(正则表达式)方言。

7 个答案:

答案 0 :(得分:6)

答案 1 :(得分:1)

regular-expressions说这个匹配约99%

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

答案 2 :(得分:1)

明确的答案?还是正常回答?

我问,因为正式电子邮件地址规范允许大多数人不愿意考虑的各种奇怪的事情(括号,引用的短语等)。

请参阅this page,了解综合普通正则表达式的列表。

答案 3 :(得分:1)

我认为电子邮件正则表达式验证没有灵丹妙药。

人们通常做的只是验证错误,例如缺少@和一个点。然后将电子邮件验证发送到该地址。这是确保他们的电子邮件确实有效的唯一方法。

答案 4 :(得分:0)

我前段时间遇到过同样的问题。 RFC 2822定义了它,根据this page,这个是有用的,是我选择的那个:“[a-z0-9!#$%&' + / =?^ _ { ??{1}} {|}〜 - ] +) @(?:一个-Z0-9)+(:[AZ] {2} | COM |有机|净| GOV |密耳| BIZ |信息|摩比|名称|航空|工作|博物馆)\ b“的

答案 5 :(得分:0)

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

可能希望在所有小写版本旁边添加A-Z,以便允许使用大写字母。

答案 6 :(得分:0)

我不知道这个问题是否有一个明确的答案,但如果您实际检查该域是否存在,那么电子邮件地址会归结为<username>@<domain>,其中<domain>至少包含一个点和后缀中的两到四个字符。你可以做各种事情来检查非法/特殊字符,但最简单的是:

^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$
相关问题