2013-01-05 39 views
1

/^\[email protected]\S+\.\S+$/i抛出,这是我的正则表达式,但它仍然是投掷警告警告与正则表达式

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

我相信这是一个由转义附加我在最后,我的代码是这样的

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

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

+0

btw。附加的'i'不会漏掉任何东西。它是不区分大小写的修饰符。在你的正则表达式中它没有效果,你可以删除它。 – bukart

回答

2

你的论点顺序应该是:

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

即$ emailregex是第一论点

+0

谢谢大声笑,我的眼睛被关闭>< –

1

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

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

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

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

“我”不会逃避正则表达式,它断言正则表达式中的任何A-Z文字都应该与大小写不敏感的目标相匹配。你需要躲避反斜线在正则表达式,像这样:

$emailregex = '/^\\[email protected]\S+\\.\\S+$/i'; 

我没有用PHP的机器上它的手,但我认为应该工作。正如其他人所提到的,您对preg_match的参数顺序也是错误的,但我认为您在正则表达式中看到警告的原因是由于缺少了斜杠。

相关问题