【发布时间】:2013-01-29 19:42:10
【问题描述】:
以下正则表达式模式(用于 PHP)用于验证任何电子邮件地址:
^[\w.-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}$
它说:“匹配至少一个(或多个)大写和/或小写字母和/或句点、下划线和/或破折号,后跟一个和只有一个@ 后跟至少一个(或多个)大写和/或小写字母和/或句点和/或下划线 后跟一个和只有一个句点后跟两到六个大写和/或小写字母。
这似乎与我能想到的任何电子邮件地址相匹配。尽管如此,这种正确的感觉可能具有欺骗性。知识渊博的人能否指出我不知道的这种模式中的一个明显或不那么明显的漏洞,这会使其无法按照预期的方式执行电子邮件验证?
(为了预见可能的响应,我知道 filter_var() 函数提供了更强大的解决方案,但我对这种情况下的正则表达式特别感兴趣。)
注意:这是一个关于 PHP 正则表达式风格的理论问题,而不是关于验证电子邮件的实际问题。在这种情况下,我只想确定正则表达式合理可行的限制。
提前谢谢你!
【问题讨论】:
-
例如,电子邮件可能包含加号 (
+)。你已经看过RFC-complicant regex,不是吗?另见this question -
我做到了。我问这个问题是因为我想看一个与此模式不匹配的实际电子邮件地址的示例。
标签: php regex email-validation