Я использую это: if(!preg_match('/^+[0-9]$/', '+1234567'))
и я получаю:
Предупреждение: preg_match () [function.preg-match]: Ошибка компиляции: ничего не повторять со смещением 1
любые идеи почему?
update : Теперь, используя это: if(!preg_match('/^\+[0-9]$/', '+1234567'))
и я не получаю никакого соответствия.
любые идеи почему?
+ – специальный символ, который указывает 1 или более предыдущего символа, и, не ускользая от него, вы применяете его к карете. убегайте его с \ и он будет соответствовать буквальному знаку плюс.
if(!preg_match('/^\+[0-9]$/', '+1234567'))
РЕДАКТИРОВАТЬ:
Причина, по которой это не соответствует, состоит в том, что вы указали 1 цифру от 0 до 9 и конец строки с $ . Вы должны сделать это переменным количеством цифр.
if(!preg_match('/^\+[0-9]+$/', '+1234567')) {
Более короткая версия:
if(!preg_match('/^\+\d+$/', '+1234567')) {
'/^\+[0-9]$/' означает, что начало строки должно быть плюсом, обозначаемым числом, затем концом строки.
'/^\+[0-9]+$/' означает, что начало строки должно быть плюсом, обозначаемым одним или несколькими номерами, а затем концом строки.