2014-10-08 2 views
0

Что случилось с:Что плохого в регулярном выражении

$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 
+0

[This] (http://regex101.com/) - отличный сайт для тестирования регулярного выражения, возможно он придет в руки. – Alternatex

+1

У вас сначала есть один), а затем один (. Your() [круглые скобки] не прав –

ответ

1

Две круглые скобки не закрыты:

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

            ^^^^ 

Если это знак, который вам нужен, вам нужно его избежать. в противном случае вам нужно открыть и закрыть круглые скобки в regexp.

1

Как уже говорилось, скобки не закрыты. Я предполагаю, что вы должны просто удалить их, так как за ними не следует квантификатор (*, +,? Или {}), и у вас нет параметра $ matches, так что вы не заинтересованы в захвате групп.

Кроме того, я не думаю, что [0-5 [7-9]] делает то, что вы думаете, что он делает: это означает: любой из символов от 0 до 5, [, от 7 до 9 или]. Вероятно, вы хотите [0-57-9], что означает: любой из символов от 0 до 5 или от 7 до 9

Смежные вопросы