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

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

circle-exclamation
circle-info

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

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

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

^(\+)?((\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/arrow-up-right

Последнее обновление