用正则表达式引发警告

时间:2013-01-05 23:32:55

标签: php regex

/^\S+@\S+\.\S+$/i这是我的正则表达式,但仍然会抛出警告

警告:preg_match():分隔符不能是字母数字或反斜杠...

我相信这是通过在最后添加i来逃避的,我的代码就是这个

       $emailregex = '/^\S+@\S+\.\S+$/i';
   $isbnregex = '/[0-9]{12}[0-9Xx]/i';
   preg_match ($plaintext,$emailregex,$emailaddress);
   var_dump ($emailaddress);

任何人都可以对此有所了解吗?

3 个答案:

答案 0 :(得分:2)

你的论点顺序应该是:

preg_match ($emailregex,$plaintext,$emailaddress);

即。 $ emailregex是第一个参数

答案 1 :(得分:1)

您混淆了参数顺序。来自文档:

int preg_match ( string $pattern , string $subject [, array &$matches
                                                     [, int $flags = 0
                                                     [, int $offset = 0 ]]] )

所以你的代码应该是这样的:

preg_match ($emailregex, $plaintext, $emailaddress);

答案 2 :(得分:0)

“i”不会转义正则表达式,它断言正则表达式中的任何A-Z字面值都应该与不区分大小写的目标匹配。您需要在正则表达式中转义反斜杠,如下所示:

$emailregex = '/^\\S+@\S+\\.\\S+$/i';

我手边没有带PHP的机器,但我认为应该可行。正如其他人所提到的,preg_match参数的顺序也是错误的,但我认为你在正则表达式中看到警告的原因是由于缺少了逃逸斜杠。