如何解决使用preg_match [重复]的无效电子邮件地址
| 这个问题已经在这里有了答案:解决方法
为什么不只使用filter_var
var_dump(filter_var($email,FILTER_VALIDATE_EMAIL));
编辑
if(filter_var($email,FILTER_VALIDATE_EMAIL) === false)
{
echo \'Email is not valid\';
}
else
{
//do the stuff
}
, 现在我可以问你一个问题吗?这些空格在您的正则表达式中做什么? :-)
我可以肯定,电子邮件地址中的空格实际上无效。而且,即使它们是,也不需要相对于分隔符位于特定位置(例如紧接在@
字符之前和之后)。
尽管我通常不同意对电子邮件地址使用正则表达式(只发送带有确认链接的电子邮件-解决了您的问题,然后再解决一些问题),但如果必须这样做,则至少应使用正确的正则表达式。
a有无数个完全有效的电子邮件地址,它们后面没有实际帐户。
, 如果您想使用正则表达式来匹配电子邮件,则以下内容将匹配\“明智\”地址。
preg_match(\'/^([a-z0-9]+([_\\.\\-]{1}[a-z0-9]+)*){1}([@]){1}([a-z0-9]+([_\\-]{1}[a-z0-9]+)*)+(([\\.]{1}[a-z]{2,6}){0,3}){1}$/i\',$email)
它很冗长,但是如果您只想像我说的“明智的”地址那样通过,它就可以了。
确实会卡在\“ example@somename.somewhere.com \”之类的地址上,因为在@符号之后,它会查找句点之后的所有内容,长度仅为2-6个字符。
\“ example@somename-somewhere.com \”不过可以通过。
我不建议尝试为该作业使用单个正则表达式解决方案,除非像我这样,您只希望允许“明智的”地址。
这里有一篇很好的文章,涵盖了“正确”验证电子邮件地址:http://www.linuxjournal.com/article/9585
, 通过计划发布的新的无域地址,paxdiablo的解决方案似乎更好
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。