Я использую это: 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]+$/'
означает, что начало строки должно быть плюсом, обозначаемым одним или несколькими номерами, а затем концом строки.