2013-09-18 6 views
0

Пользователи должны ввести номер телефона в международном формате, он должен начинаться с символа + и без особых символов, например, +3162503277.Regex PHP: международный номер телефона, +

Я думал, что это простое регулярное выражение будет делать это, но я почему-то должно быть что-то не хватает, потому что он не принимает номер телефона:

if (!preg_match('/^\+?[0-9]{6}$/i', $phone)) 
    fail("Invalid phone number"); 

Что должно быть так, чтобы проверить, если номер начинается с a + и далее содержит только числа?

ответ

4

Добавление ? после \++ продается отдельно.

[0-9]{6}$ соответствует только 6 цифрам. Чтобы сопоставить больше цифр, вы должны использовать + isntead {6}. Если вы хотите 6 или более цифр, используйте {6,}.

Попробуйте следующее:

if (!preg_match('/^\+\d+$/', $phone)) 
    fail("Invalid phone number"); 
+0

Вы совершенно правильно, но я бы хотел, чтобы помочь прояснить один момент. '{6} $' означает шесть цифр без ничего. Если «$» отсутствует, его регулярное выражение все равно будет соответствовать 316250 – Gary

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