/^(\+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 написал(а):
Попроще
Спустя 50 секунд Winston написал(а):
Invis1ble
Элегантней
$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
Элегантней
Спустя 2 минуты, 16 секунд (5.09.2011 - 22:02) Игорь_Vasinsky написал(а):
Цитата |
/^\+7\(\pN{3,4}\) \pN{3}-\pN{2,3}-\pN{2,3}$/u |
про pN - не слышал... надоб почитать
Winston
да..всё не могу привычку бросить обрамлять скобками
Цитата |
/^\+7\(\pN{3,4}\) \pN{3}(?:-\pN{2,3}){2}$/u |
ого.... это вообще мастер-класс, а прокомментировать не трудно
UPD
не могу найти такой синтаксис в гугле
Спустя 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 написал(а):
Спустя 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 написал(а):
согласен
Спустя 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