2013-04-30 4 views
0
$p1 = "[0-9]{4}"; 
$p2 = "[0-9]{1,6}"; 
if($name == null || $id == null) 
{ 
    // Assume that I have a error message set up 
    die(); 
} 
else if(!preg_match($p1,$id)) 
{ 
    die(); 
} 
else 
{ 
    //...Some stuff 
} 

Я получаю это когда я пытаюсь представить мою форму:Неожиданное «[» в регулярном выражении

Parse error: syntax error, unknown modifier '{' on Line 29

(линия 19 является $p1 = "^[0-9]{4}$";.) Могу ли я с видом что-то или я просто глупо?

+3

Совет: используйте одинарные кавычки при написании регулярных выражений! Если вам когда-либо нужно что-то избегать, это будет кошмар в противном случае. – Ryan

ответ

7

Вы забыли свой regex delimiters (и, как предложил minitech, вы должны использовать одинарные кавычки в ожидании будущих проблем с экранированием).

Следовательно,

$p1="[0-9]{4}$"; 
$p2="[0-9]{1,6}"; 

должно быть

$p1='/[0-9]{4}$/'; 
$p2='/[0-9]{1,6}/'; 

который обычный разделитель. Обратите внимание, что вы можете выбрать из множества различных символов разделителей (см ссылку выше), как

$p1='@[0-9]{4}[email protected]'; 
$p2='@[0-9]{1,6}@'; 

Это может быть удобно, когда ваш шаблон включает в себя /, так что вы не должны их избежать.

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