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

Для сравнения с помощью регулярного выражения необходимо установить тип совпадения «RegEx match».

Регулярные выражения должны быть записаны в самом триггере, а не в переменных, используемых для совпадения!

При сборе данных пользователи часто вводят не то, что от них требуется. Вот типичный сценарий проверки ввода номера телефона. Если пользователь не вводит действительный номер телефона, бот предложит ему попробовать снова.

Блок ввода номера телефона имеет два исходящих соединения: одно без триггера, а другое с триггером, использующим регулярное выражение для сопоставления с номером телефона.

^(\+)?((\d{2,3}) ?\d|\d)(([ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$

Этот поток использует два соединения для обработки проверки номера телефона:

  1. Основное соединение (действительный номер)
    • Триггер: Корректно отформатированный номер телефона.
    • Действие: Добавляет номер в заявку и продолжает.
  2. Резервное соединение (недопустимый ввод)
    • Приоритет: Ниже, чем у основного соединения.
    • Триггер: Любой ввод, не являющийся действительным номером телефона.
    • Действие: Сообщает пользователю об ошибке и перенаправляет его для повторной попытки.

Это гарантирует, что пользователь перейдет дальше только после предоставления действительных данных, получая при этом немедленную обратную связь об ошибках.

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

  • Числовой ввод, только цифры, начинающиеся с 1:
    ^[1-9]+[0-9]*$
  • Числовой ввод, только цифры, начинающиеся с 0:
    ^[0-9]+[0-9]*$
  • Номер кредитной карты:
    [0-9]{13,16}
  • Общий номер телефона:
    ^(\+)?((\d{2,3}) ?\d|\d)(([ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$
  • Буквы и цифры (латиница):
    ^[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]).*$
  • Дата в формате ГГГГ-ММ-ДД:
    [0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])
    ОБНОВЛЕНИЕ. Более строгая проверка даты:
    (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)
  • Дата в формате ДД/ММ/ГГГГ:
    (0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d
  • Дата в формате ДД.ММ.ГГГГ:
    (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+
  • ОБНОВЛЕНИЕ. E-mail:
    ^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$
  • ОБНОВЛЕНИЕ. URL
    ~^(?:(?: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
  • ОБНОВЛЕНИЕ. Время в формате ЧЧ:ММ:СС:
    ^([0-1]\d|2[0-3])(:[0-5]\d){2}$
  • ОБНОВЛЕНИЕ. Mac-адрес:
    ([0-9a-fA-F]{2}([:-]|$)){6}$|([0-9a-fA-F]{4}([.]|$)){3}

Существует большое количество регулярных выражений. Если вы не нашли нужное в этом списке, рекомендуется воспользоваться поисковой системой.

Вы можете удобно тестировать регулярные выражения на сайтах, таких как: https://regex101.com/