Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 预匹配-正则表达式错误_Php - Fatal编程技术网

Php 预匹配-正则表达式错误

Php 预匹配-正则表达式错误,php,Php,使用以下代码 $regex = "^[_+a-z0-9-]+(\.[_+a-z0-9-]+)*" ."@[a-z0-9-]+(\.[a-z0-9-]{1,})*" ."\.([a-z]{2,}){1}$"; if(!preg_match($regex,$subemail)){ $form->setError($field, "* Email invalid"); } $subemail = stripslashes($subemail

使用以下代码

$regex = "^[_+a-z0-9-]+(\.[_+a-z0-9-]+)*"
    ."@[a-z0-9-]+(\.[a-z0-9-]{1,})*"
    ."\.([a-z]{2,}){1}$";

    if(!preg_match($regex,$subemail)){
      $form->setError($field, "* Email invalid");
    }

    $subemail = stripslashes($subemail);
}
我收到以下错误

Warning: preg_match() [function.preg-match]: No ending delimiter '^' found 

任何帮助都将不胜感激。

现在它认为
^
是开头的分隔符,因此希望在结尾处有另一个分隔符。您可以使用任意数量的分隔符,例如
/
/
,或
@
@
,或
和code>等。下面的分隔符使用
/
/
作为其开始/结束分隔符:

     $regex = "/^[_+a-z0-9-]+(\.[_+a-z0-9-]+)*"
         ."@[a-z0-9-]+(\.[a-z0-9-]{1,})*"
         ."\.([a-z]{2,}){1}$/";

您必须用
#
/
围绕您的模式,如下所示:
“#[abc]+#”

我之所以使用personnal,是因为它比/


对于电子邮件验证标准PHP函数,请使用
filter\u var('bob@example.com“,过滤器(验证电子邮件)
(请参阅)

即使您要修复分隔符,您的模式也会在许多电子邮件地址上失败: