| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Регулярные выражения > regex Диапазон |
| Автор: vaxxxye 2.1.2016, 19:59 |
Прошу у вас помощи форумчане.Помогите пожалуйста с настройками диапазона regex под укр номера. Вот сама схема - но сложновато как то получается \([\d]{2,3}\)[ ]{0,2}[\d]{7} [\d]{3}-[\d]{3}-[\d]{2}-[\d]{2} [\d]{3}[- ()]{1}[\d]{3}-[\d]{2}-[\d]{2} [\d]{3}\) [\d]{7} [\d]{3}\) [\d]{3}[ -]{1}[\d]{2}[ -]{1}[\d]{2}[ -]{1} [\d]{12}|[\d]{11} [\d]{10}|[\d]{9} [\d]{3}[- ()]{1}[\d]{3}[- ()]{1}[\d]{2}[- ()]{1}[\d]{2} [\d]{3}[- ()]{1}[\d]{2}[- ()]{1}[\d]{2}[- ()]{1}[\d]{3} [\d]{3}[- ()]{1}[\d]{2}[- ()]{1}[\d]{3}[- ()]{1}[\d]{2} [\d]{3}[- ()]{1}[\d]{7} [\d]{3}[- ()]{1}[\d]{4}[- ()]{1}[\d]{3} [\d]{3}[- ()]{1}[\d]{3}[- ()]{1}[\d]{4} Как правильно вправить в этот код что бы принимало номера с телефонами "+38..." по примеру +38(097)xxxxxxx ? хотя бы один регекс,исходя из этого рг? Благодарю за помощь и с НГ вас. |
| Автор: Romikgy 2.1.2016, 22:27 |
| примеры номеров накидать можете? |
| Автор: mailer 3.1.2016, 11:59 |
| \+38\(?0\(?(?<code>\d{2})\)?(?<fg>\d{3})-?(?<sg>\d{2})-?(?<tg>\d{2}) Здесь четыре именованных группы: <code> - содержит код оператора (последние две цифры, поскольку код Украины в международном классификаторе не 38, а 380); <fg> - первые три цифры номера; <sg> - вторые две цифры номера; <tg> - последние две цифры номера. Потом из этих групп собираете полный номер. Матчится как минимум на следующие варианты ввода: +380501234567 +38(097)1234567 +380(63)1234567 +380(66)123-4567 +380(50)123-45-67 И в качестве новогоднего подарка:
Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/regex-Diapazon-id5688021bae2015ed078b4568#findElement_E7045_5688e2dbae2015b10bfb0723_0 |
| Автор: vaxxxye 3.1.2016, 14:40 | ||||
Да конечно. Вот примеры номеров что бы проще было +38 098 307 89 53 +380 (50) 814-50-05 +380 (50) 81-45-005 +38 097-143-73-03 +38 (097)-143-73-03 +38 (097)14-37-303 ну это в общем.(Но смысла писать много нету,ибо схема выше "регулярок" работает по такому поиску символов только без учёта "38 и 380"). Мне хотя бы пару примеров по этой схеме что бы не нарушать структуру регулярок выше иначе перестает всё работать.А лучше довести до универсальности,думаю будет полезно пользователям. Добавлено через 2 минуты и 24 секунды
К сожалению нарушив структуре регекса который выше,перестает работать всё) но все ровно благодарен за помощь и отзыв.Всё же лучше попробовать исходить из того что есть. |
| Автор: vaxxxye 3.1.2016, 17:02 |
| от к примеру эта регулярка " [\d]{3}-[\d]{3}-[\d]{2}-[\d]{2} " отвечает за поиск такого стандарта символов к примеру 097-955-55-55.А как бы подогнать под стандарты с +380 и 38.? |
| Автор: Romikgy 3.1.2016, 20:00 | ||
работает в ваших примерах |
| Автор: tzirechnoy 4.1.2016, 15:42 |
| По-моему, это страдание хернёй какой-то. Хотите нормально? Приведите телефон к E.164, затем можно код страны позицыонно сравнивать. |
| Автор: Romikgy 5.1.2016, 13:48 | ||
|
| Автор: vadiml 5.1.2016, 20:46 |
| Зачистите номер телефона от всех нецифровых символов, а затем проверяйте корректность, после, если надо, поставите сами скобки, дефисы и др. в положенных местах |