preg_match:未知的修饰符'+'?

时间:2015-02-26 11:56:11

标签: php regex preg-match

我有这种模式来检查电子邮件:

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

当我想执行此代码时:

$emailpat = "[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?";
if(!preg_match($emailpat, $_POST["email"])){
    echo "error in email";
}else{
    echo "done";
}

我收到以下错误:

preg_match() [function.preg-match]: Unknown modifier '+'

2 个答案:

答案 0 :(得分:1)

建议

如果您正在处理用户输入,我建议使用filter_var()功能。它几乎完全相同,但没有完整的正则表达式。

实施例

参考

答案 1 :(得分:0)

感谢您的帮助!!问题是决定......

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

我需要用2个反斜杠掩码斜杠

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