salebot
December 13, 2022

Регулярные выражения в Salebot

Промокод на 10 бесплатных дней в проекте salebot: asxaba1

Мой чат-бот вакансий - https://t.me/infobizaa_bot

Часто нужно запрашивать у пользователей их почту, телефон, но бывают не очень хорошие люди, которые пытаются вместо телефона написать 'фывфывфыв' и также вместо почты.

А как же тогда сделать так, чтобы бот понимал, что пользователь написал полную фигню, вместо своего номера телефона?

и вот тут нас спасают регулярные выражения

Регулярные выражения — это условие, с помощью которого бот может проверять формат введенных данных (например, что человек ввел именно номер телефона, а не что-то иное)

Регулярное выражение, или коротко «регулярка», состоит из обычных символов и специальных командных последовательностей.

Список полезных регулярных выражений

  • Ввод только цифр: ^[1-9]+[0-9]*$
  • Номер кредитки: [0-9]{13,16}
  • ICQ: ([1-9])+(?:-?\d){4,}
  • Номер телефона(Россия): ^((\+7|7|8)+([0-9]){10})$
  • Номер телефона ^(\+)?((\d{2,3}) ?\d|\d)(([ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$
  • Фамилия+Имя или же ФИО полностью
  • ^[а-яА-ЯёЁa-zA-Z]+ [а-яА-ЯёЁa-zA-Z]+ ?[а-яА-ЯёЁa-zA-Z]+$
  • Набор из букв и цифр (латиница): ^[a-zA-Z0-9]+$
  • Набор из букв и цифр (латиница + кириллица): ^[а-яА-ЯёЁa-zA-Z0-9]+$
  • Домен (например abcd.com): ^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$
  • URL (например abcd.com): (https?):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*
  • IPv4: ((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)
  • IPv6: ((^|:)([0-9a-fA-F]{0,4})){1,8}$
  • Имя пользователя (с ограничением 2-20 символов, которыми могут быть буквы и цифры, первый символ обязательно буква): ^[a-zA-Z][a-zA-Z0-9-_\.]{1,20}$
  • Пароль (Строчные и прописные латинские буквы, цифры): ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).*$
  • Пароль (Строчные и прописные латинские буквы, цифры, спецсимволы. Минимум 8 символов): (?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$
  • Дата в формате YYYY-MM-DD: [0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01]) UPD. Более строгая проверка: (19|20)\d\d-((0[1-9]|1[012])-(0[1-9]|[12]\d)|(0[13-9]|1[012])-30|(0[13578]|1[02])-31)
  • Дата в формате DD/MM/YYYY: (0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d
  • Дата в формате DD.MM.YYYY: (0?[1-9]|[12][0-9]|3[01]).(0?[1-9]|1[012]).((19|20)\d\d)
  • Целые числа и числа с плавающей точкой (разделитель точка): \-?\d+(\.\d{0,})?
  • UUID: ^[0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12}$
  • Широта или долгота: -?\d{1,3}\.\d+
  • UPD. E-mail: ^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$
  • UPD. URL на латинице. Если нужно распознавать и кириллические домены, необходимо изменить все «a-z0-9» на «а-яёa-z0-9» и добавить в список доменных зон «рф»: ~^(?:(?:https?|ftp|telnet)://(?:[a-z0-9_-]{1,32}(?::[a-z0-9_-]{1,32})?@)?)?(?:(?:[a-z0-9-]{1,128}\.)+(?:ru|su|com|net|org|mil|edu|arpa|gov|biz|info|aero|inc|name|[a-z]{2})|(?!0)(?:(?!0[^.]|255)[0-9]{1,3}\.){3}(?!0|255)[0-9]{1,3})(?:/[a-z0-9.,_@%&?+=\~/-]*)?(?:#[^ '\"&]*)?$~i
  • UPD. Время в формате HH:MM:SS: ^([0-1]\d|2[0-3])(:[0-5]\d){2}$
  • UPD. Mac-адрес: ([0-9a-fA-F]{2}([:-]|$)){6}$|([0-9a-fA-F]{4}([.]|$)){3}

Как использовать эти регулярные выражения?

Все достаточно просто и сейчас подробно покажу

фото 1

Как правило, стандартный запрос данных у пользователя выглядит примерно так и состоит из двух простых действий

  1. Запрос данных у пользователя
  2. Ввод этих данных пользователем

Но минус этого способа состоит в том, что человек может ввести что угодно и бот засчитает это за телефон :(

Чтобы исправить этот недостаток, нужно в условии стрелки указать нужную регулярку и в "Выбор соответствия" поставить "Регулярное выражение"

А потом нужно первый блок зациклить

И теперь тестируем

Тут видим, что бот не пропустил до следующего блока и повторно запрашивает номер телефона

И только после того как я ввел корректный номер телефона - пропустил ✅

Поздравляю! Вы теперь знаете как пользоваться регулярными выражениями в salebot