Задать вопрос
@00Artom00

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

Суть такова: программирую телеграмм-бота хочу запрашивать у пользователя номер телефона в формате +375 XX XXXXXXX. подскажите библиотеку(а лучше и сразу пример подобной фильтрации) которая поможет "принять" от пользователя текст нужного формата. для моего региона это +375 XX(25,44,33,29,17) XXXXXXX(семь цифр) . так что бы этот фильтр "не принимал" от пользователя буквы и т.д и соответствовал указаному ранее формату
  • Вопрос задан
  • 105 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 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 Автор вопроса
Дело в том что нельзя поделиться чужим контактом, если например пользовательзахочет указать номер друга(в планах сделать бота по заказу пиццы)
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы