2012-04-23 2 views
0

Что в этом плохого?preg_match error Неизвестный модификатор '{'

if((preg_match('[a-zA-Z]{1,7}+',$_POST['naam'])) and (preg_match('[^\@\#\<\>\&\*\/]+[a-zA-Z0-9]+!',$_POST['password']))) 

первое регулярное выражение, я хочу строку длиной 1-7, содержащую только буквенные буквы.

Второе регулярное выражение Я хочу строку, содержащую буквы и цифры с помощью! в конце.

+0

Если первая строка должна быть длиной 1-7 символов, '{1,7} +' не имеет смысла - это соответствует 1-7 символам, но один или несколько раз. Таким образом, 8 символов были бы прекрасны и т. Д. – Niko

ответ

7

Вы упускаете разделитель вокруг ваших регулярных выражений:

if((preg_match('/[a-zA-Z]{1,7}+/',$_POST['naam'])) and (preg_match('/[^\@\#\<\>\&\*\/]+[a-zA-Z0-9]+!/',$_POST['password']))) 
+1

Документы: http://www.php.net/manual/en/regexp.reference.delimiters.php – Wiseguy

+0

Спасибо, сработало. Я, однако, что одиночные кавычки были разделителями: D – Seltjoek

3

{1,7} - это означает, что 1 до 7

{1,7}+ - это неудобно, так как + означает, что предшествующий символ должен быть по крайней мере один раз , обычно используется как [a-z]+ < - требуется a-z

{1,7}+ не соответствует действительности.

+0

спасибо, удалили! – Seltjoek

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