[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Паттерн на проверку формата телефона
Игорь_Vasinsky
Вообщем написал паттерн на проверку формата введённых номеров телефона

/^(\+7){1}(\(){1}(\d){3,4}(\)){1}(\s){1}(\d){3}(\-){1}(\d){2,3}(\-){1}(\d){2,3}$/u


пропускает только номера в формате

+7(232) 233-54-55
+7(2323) 233-54-55
+7(232) 233-544-55
+7(232) 233-544-554
+7(2328) 233-547-557

т.е. +7(3-4цифры) пробел 3цифры тире 3,4цифры тире 3,4цифры

верно справился с задачей?



Спустя 9 минут, 52 секунды (5.09.2011 - 21:59) Invis1ble написал(а):
впринципе верно, но можно проще
/^\+7\(\pN{3,4}\) \pN{3}-\pN{2,3}-\pN{2,3}$/u

или так
/^\+7\(\pN{3,4}\) \pN{3}(?:-\pN{2,3}){2}$/u

Спустя 26 секунд (5.09.2011 - 22:00) Winston написал(а):
Попроще
$str = "+7(232) 233-54-55";
if(preg_match("/^\+7\(\d{3,4}\)\s\d{3}\-\d{2,3}\-\d{2,3}$/", $str))
echo 'OK';
else
echo 'bad';




Спустя 50 секунд Winston написал(а):
Invis1ble
Элегантней smile.gif

Спустя 2 минуты, 16 секунд (5.09.2011 - 22:02) Игорь_Vasinsky написал(а):
Цитата
/^\+7\(\pN{3,4}\) \pN{3}-\pN{2,3}-\pN{2,3}$/u

про pN - не слышал... надоб почитать

Winston
да..всё не могу привычку бросить обрамлять скобками rolleyes.gif

Цитата
/^\+7\(\pN{3,4}\) \pN{3}(?:-\pN{2,3}){2}$/u

ого.... это вообще мастер-класс, а прокомментировать не трудно

UPD
не могу найти такой синтаксис в гугле dry.gif

Спустя 5 минут, 25 секунд (5.09.2011 - 22:07) Invis1ble написал(а):
Цитата
про pN - не слышал... надоб почитать

\pN рекомендуют использовать вместо \d при работе с юникодом (также как и \pL вместо \w, например).

Цитата
ого.... это вообще мастер-класс, а прокомментировать не трудно?

ничего особенного, просто два повторяющихся участка заменил одним и поставил квантификатор 2. Ну и ?: - группировка без захвата, для оптимизации

Цитата
не могу найти такой синтаксис в гугле

Почитай книгу Дж. Фридла "Регулярные выражения"

Спустя 1 минута, 42 секунды (5.09.2011 - 22:09) Игорь_Vasinsky написал(а):
понял. спасиб.

Спустя 13 минут, 31 секунда (5.09.2011 - 22:23) Winston написал(а):
Цитата (Игорь_Vasinsky @ 5.09.2011 - 22:02)
не могу найти такой синтаксис в гугле

А чего там искать? smile.gif

Спустя 3 минуты, 30 секунд (5.09.2011 - 22:26) Invis1ble написал(а):
Winston
Цитата
А чего там искать?

некоторые примеры в php работать не будут

Спустя 2 минуты, 19 секунд (5.09.2011 - 22:29) Winston написал(а):
Цитата (Invis1ble @ 5.09.2011 - 22:26)
некоторые примеры в php работать не будут

Да. Но думаю смысл некоторых метасимволов будет ясен.

Спустя 1 минута, 55 секунд (5.09.2011 - 22:30) Invis1ble написал(а):
согласен smile.gif

Спустя 1 минута, 23 секунды (5.09.2011 - 22:32) Игорь_Vasinsky написал(а):
гляну щас...

Спустя 11 минут, 19 секунд (5.09.2011 - 22:43) kirik написал(а):

Спустя 8 минут, 44 секунды (5.09.2011 - 22:52) Игорь_Vasinsky написал(а):
kirik
Задачу так и не решили?

Спустя 4 часа, 30 минут, 7 секунд (6.09.2011 - 03:22) kirik написал(а):
Цитата (Игорь_Vasinsky @ 5.09.2011 - 15:52)
Задачу так и не решили?

Видимо нет :) Вот нашёл в бэкапах что я тогда нарешал:
'/(?:\s|[^\d\-]|^)((?:(?:\(\d{3}\)\-\d{2}|\+\d\-\d{3}\-\d{2})(\-)|\d{3}|\d{2}([\s\-]))\d{2}(?:\\2|\\3|)\d{2})(?:\s|[^\d\-]|$)/'

оказыццо это уже 2 года назад было :)


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.