# Регулярні вирази

Регулярні вирази — це шаблони, які дозволяють боту перевіряти формат введених користувачем даних — наприклад, переконатися, що введене значення є номером телефону, а не чимось іншим.

<div data-with-frame="true"><figure><img src="/files/6457d8002c9cdfd6c2afb5124995bf77d7c34099" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="warning" %}
Щоб порівнювати за допомогою регулярного виразу, потрібно встановити тип зіставлення на "RegEx match".
{% endhint %}

{% hint style="info" %}
Регулярні вирази слід писати в самому тригері, а не у змінних, що використовуються для зіставлення!
{% endhint %}

Під час збору даних користувачі часто вводять не те, що від них просять. Ось типовий сценарій перевірки введення номера телефону. Якщо користувач не введе дійсний номер телефону, бот попросить його спробувати ще раз.

<div data-with-frame="true"><figure><img src="/files/45e4fc0aaf7643430e850d66d6009b3ffa9f9249" alt="" width="563"><figcaption></figcaption></figure></div>

Блок введення номера телефону має два вихідні з’єднання: одне без жодного тригера, а інше з тригером, який використовує регулярний вираз для зіставлення номера телефону.

^(\\+)?((\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]).\*$
* **Дата у форматі YYYY-MM-DD:**\
  \[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)
* **Дата у форматі 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+
* **ОНОВ. E-mail**:\
  ^\[-\w.]+@(\[A-z0-9]\[-A-z0-9]+\\.)+\[A-z]{2,4}$
* <mark style="color:red;">**ОНОВ. URL**</mark> \
  \~^(?:(?: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
* **ОНОВ. Час у форматі HH:MM:SS**: формат\
  ^(\[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/>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/uk/chatbot/functions/regex.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
