@00Artom00

Как отфильтровать строку?

Суть такова: программирую телеграмм-бота хочу запрашивать у пользователя номер телефона в формате +375 XX XXXXXXX. подскажите библиотеку(а лучше и сразу пример подобной фильтрации) которая поможет "принять" от пользователя текст нужного формата. для моего региона это +375 XX(25,44,33,29,17) XXXXXXX(семь цифр) . так что бы этот фильтр "не принимал" от пользователя буквы и т.д и соответствовал указаному ранее формату
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
Shurik24
@Shurik24
Обычный программист самоучка
Библиотека re, это регулярные выражения, если ничего о них не знаешь загугли, но суть такая что оно упрощает проверки 1 выражением

Нашел на просторах интернета регулярку для кода твоей страны

Regular expression: ^\s*\+?375((33\d{7})|(29\d{7})|(44\d{7}|)|(25\d{7}))\s*$
Operators: MTS, Velcom and Life.

Насколько знаю в телеграмме боты могут на прямую запросить номер телефона у пользователя при нажатии кнопки start
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@MusArtVlad
Новичок в программировании
как насчёт варианта isdigit()? и при «False» выведи ему «Укажи только цифры»
Но это такая себе идея. Более правильный вариант — использовать маску, (подставлять все цифры пользователя на нужное место) или просить пользователя прислать свой контакт, и из контакта по API дёргать нужные тебе значения

15 символов, с учётом пробелов:
1. Поставь ограничение ввода на 15 символов. Принимай первые 15 символов, например
2. убедись, что '+' в строке нет (if '+' in phone:)
3. Если + есть, то смотри телефон со следующей от него цифры. Можешь пользоваться поиском по индексу, например. Если плюса нет, тогда от первого символа.
4. Проверяй первые 2 цифры после +375 на соответствие (phone[0:2] in ['25', '44', '33', '29', '17']). Если не соответствует, отправляй ошибку
5. Проверяй последние 7 цифр. Если их меньше, указывай ошибку. Если их больше, отправляй ошибку.

Вариантов, конечно, много

Можно отсплитить по пробелам и сджойнить и т.д.
Ответ написан
@00Artom00 Автор вопроса
Дело в том что нельзя поделиться чужим контактом, если например пользовательзахочет указать номер друга(в планах сделать бота по заказу пиццы)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы