【发布时间】:2010-10-01 19:55:57
【问题描述】:
重复:Using a regular expression to validate an email address
网上似乎有很多不同的变体,想知道是否有明确的答案?
最好使用正则表达式的 .net (Regex) 方言。
【问题讨论】:
-
请看那个question。
重复:Using a regular expression to validate an email address
网上似乎有很多不同的变体,想知道是否有明确的答案?
最好使用正则表达式的 .net (Regex) 方言。
【问题讨论】:
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])?
【讨论】:
确定的答案?还是正常的答案?
我之所以这么问,是因为正式电子邮件地址规范允许大多数人懒得解释的各种奇怪的东西(括号、引用的短语等)。
请参阅this page 以获取 comprehensive 和 normal 正则表达式的列表。
【讨论】:
我认为电子邮件正则表达式验证没有灵丹妙药。
人们通常做的是只验证错误,比如没有@和一个点。然后向该地址发送电子邮件验证。这是确保他们的电子邮件确实有效的唯一方法。
【讨论】:
【讨论】:
[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,以便也允许大写字母。
【讨论】:
我不知道这个问题是否有一个明确的答案,但如果你不去实际检查域是否存在,电子邮件地址归结为<username>@<domain>,其中<domain> 至少包含一个点,两个到后缀中的四个字符。你可以做各种各样的事情来检查非法/特殊字符,但最简单的一种是:
^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$
【讨论】:
[\w-\.]+?