/^\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);
任何人都可以对此有所了解吗?
答案 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参数的顺序也是错误的,但我认为你在正则表达式中看到警告的原因是由于缺少了逃逸斜杠。