1

/^\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);

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

4

3 回答 3

2

你的论点顺序应该是:

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

即 $emailregex 是第一个参数

于 2013-01-05T23:35:27.443 回答
1

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

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

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

preg_match ($emailregex, $plaintext, $emailaddress);
于 2013-01-05T23:35:17.390 回答
0

"i" 不会转义正则表达式,它断言正则表达式中的任何 AZ 文字都应该不区分大小写地匹配目标。您需要像这样转义正则表达式中的反斜杠:

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

我手头没有一台装有 PHP 的机器,但我认为这应该可以。正如其他人所提到的,您对 preg_match 的参数顺序也是错误的,但我认为您在正则表达式中看到警告的原因是缺少转义斜杠。

于 2013-01-06T00:00:33.643 回答