我无法在PHP中使用preg_match()
来验证电子邮件地址。我已经使用http://www.regexer.com工具测试了我在Internet上找到的RegEx表达式,并且可以正常使用我在PHP应用程序上使用的相同输入。
RegEx表达式:
^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$
Regexer:http://regexr.com?2sr2a
我在PHP中这样应用它:
$email = "local@test.com";
$pattern = "/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix";
if (false == preg_match($pattern, $email))
echo "false";
当然,我通过这封电子邮件和我测试过的其他人得到了错误。我认为这个表达形式很好,因为在regexer上我可以测试并且它有效。我的申请不正确?
提前谢谢!
答案 0 :(得分:1)
反斜杠字符需要通过将它们加倍来正确转义:
$pattern = "/^([a-z0-9\\+_\\-]+)(\\.[a-z0-9\\+_\\-]+)*@([a-z0-9\\-]+\\.)+[a-z]{2,6}$/ix";
使用此模式,preg_match正确返回1.
答案 1 :(得分:0)
我不确定你的代码有什么问题,但是你有一个功能齐全的php函数来检查电子邮件地址:
function is_validemail($email)
{
return preg_match('/^[\w.-]+@([\w.-]+\.)+[a-z]{2,6}$/is', $email);
}
$email = "local@root.ws";
if(is_validemail($email)) { echo ("email validated"); } else { echo ("invalid email given"); }
希望它有所帮助!