preg_match: нечего повторять / нет совпадения - PullRequest
9 голосов
/ 11 июля 2010

Я использую это: if(!preg_match('/^+[0-9]$/', '+1234567'))

и получаю:

Предупреждение: preg_match () [function.preg-match]: компиляция не удалось: ничего не повторить со смещением 1

есть идеи почему?

<Ч />

обновление : теперь используется это: if(!preg_match('/^\+[0-9]$/', '+1234567'))

и я не получаю совпадений.

есть идеи, почему?

Ответы [ 2 ]

21 голосов
/ 11 июля 2010

+ - это специальный символ, который указывает на 1 или более из предыдущего символа, и, не экранируя его, вы применяете его к каретке. экранируйте его \, и оно будет соответствовать буквальному плюсу.

if(!preg_match('/^\+[0-9]$/', '+1234567'))

EDIT:

Причина, по которой он не совпадает, состоит в том, что вы указали 1 цифру от 0-9 и конец строки с $. Вы должны сделать это переменное количество цифр.

if(!preg_match('/^\+[0-9]+$/', '+1234567')) {

Укороченная версия:

if(!preg_match('/^\+\d+$/', '+1234567')) {
3 голосов
/ 11 июля 2010

'/^\+[0-9]$/' означает, что начало строки должно быть знаком плюс с последующим номером после конца строки.

'/^\+[0-9]+$/' означает, что начало строки должно быть знаком плюс, после которого следует одно или несколько чисел после конца строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...