正则表达式有什么不对

时间:2014-10-08 13:27:50

标签: php regex

错误:

$pattern = '/9[0-5[7-9]]{1}[\\d]{10})|([0-2]\\d{11}/';
$subject = '971093342689';

尝试检查php

preg_match($pattern, $subject)

收到错误:

preg_match(): Compilation failed: unmatched parentheses at offset 22 

2 个答案:

答案 0 :(得分:1)

两个括号未关闭:

$pattern = '/9[0-5[7-9]]{1}[\\d]{10})|([0-2]\\d{11}/';

                                    ^^^^

如果这是你需要的标志,你必须逃脱它。否则你需要在你的正则表达式中打开和关闭括号。

答案 1 :(得分:1)

正如其他人所说,括号并未关闭。我的猜测是你应该删除它们,因为它们后面没有量词(*,+,?或{}),并且你没有$ matches参数,所以你对捕获组不感兴趣。

另外,我不认为[0-5 [7-9]]做你认为它做的事情:这意味着:任何字符0到5,[,7到9或]。您可能需要[0-57-9],这意味着:任何字符0到5或7到9