# Expresiones regulares

Las expresiones regulares son patrones que permiten a un bot validar el formato de la entrada del usuario; por ejemplo, para asegurarse de que la entrada sea un número de teléfono y no otra cosa.

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

{% hint style="warning" %}
Para comparar usando una expresión regular, debes establecer el tipo de coincidencia en "RegEx match".
{% endhint %}

{% hint style="info" %}
¡Las expresiones regulares deben escribirse en el propio disparador, no en las variables usadas para la coincidencia!
{% endhint %}

Al recopilar datos, los usuarios a menudo ingresan algo distinto de lo que se les pide. Aquí hay un flujo típico para validar la entrada de un número de teléfono. Si el usuario no ingresa un número de teléfono válido, el bot le pedirá que lo intente de nuevo.

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

El bloque de entrada de número de teléfono tiene dos conexiones de salida: una sin ningún disparador y otra con un disparador que usa una expresión regular para coincidir con un número de teléfono.

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

Este flujo usa dos conexiones para manejar la validación del número de teléfono:

1. **Conexión principal (número válido)**
   * **Disparador:** Un número de teléfono con el formato correcto.
   * **Acción:** Agrega el número a la aplicación y continúa.
2. **Conexión de respaldo (entrada no válida)**
   * **Prioridad:** Más baja que la conexión principal.
   * **Disparador:** Cualquier entrada que no sea un número de teléfono válido.
   * **Acción:** Informa al usuario del error y lo redirige para que lo intente de nuevo.

Esto garantiza que el usuario solo avance después de proporcionar datos válidos, al mismo tiempo que recibe comentarios inmediatos sobre cualquier error.

## Una lista de expresiones regulares útiles:

* **Entrada numérica solo dígitos que comienzan con 1:**\
  ^\[1-9]+\[0-9]\*$
* **Entrada numérica solo dígitos que comienzan con 0:**\
  ^\[0-9]+\[0-9]\*$
* **Número de tarjeta de crédito:**\
  \[0-9]{13,16}
* **Número de teléfono general:**\
  ^(\\+)?((\d{2,3}) ?\d|\d)((\[ -]?\d)|( ?(\d{2,3}) ?)){5,12}\d$
* **Letras y números** (Latín):\
  ^\[a-zA-Z0-9]+$
* **Dominio** (p. ej., abcd.com):\
  ^(\[a-zA-Z0-9]\(\[a-zA-Z0-9\\-]{0,61}\[a-zA-Z0-9])?\\.)+\[a-zA-Z]{2,6}$
* **URL** (p. ej., 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}$
* **Nombre de usuario** (con un límite de 2 a 20 caracteres, que pueden ser letras y números, el primer carácter debe ser una letra):\
  ^\[a-zA-Z]\[a-zA-Z0-9-\_\\.]{1,20}$
* **Contraseña** (Letras latinas minúsculas y mayúsculas, números):\
  ^(?=.\*\d)(?=.\*\[a-z])(?=.\*\[A-Z])(?!.\*\s).\*$
* **Contraseña segura** (mayúsculas, minúsculas, números/caracteres especiales, mínimo 8 caracteres):\
  (?=^.{8,}$)((?=.\*\d)|(?=.\*\W+))(?!\[.\n])(?=.\*\[A-Z])(?=.\*\[a-z]).\*$
* **Fecha en formato AAAA-MM-DD:**\
  \[0-9]{4}-(0\[1-9]|1\[012])-(0\[1-9]|1\[0-9]|2\[0-9]|3\[01])\
  **ACT.** Validación de fecha más estricta:\
  (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)
* **Fecha en formato DD/MM/AAAA:**\
  (0\[1-9]|\[12]\[0-9]|3\[01])\[- /.]\(0\[1-9]|1\[012])\[- /.]\(19|20)\d\d
* **Fecha en formato DD.MM.AAAA:**\
  (0\[1-9]|\[12]\[0-9]|3\[01])\[.]\(0\[1-9]|1\[012])\[.]\(19|20)\d\d
* I**nteger y números de punto flotante** (punto como separador decimal)\
  \\-?\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}$
* **Latitud o longitud:**\
  -?\d{1,3}\\.\d+
* **ACT. Correo electrónico**:\
  ^\[-\w.]+@(\[A-z0-9]\[-A-z0-9]+\\.)+\[A-z]{2,4}$
* <mark style="color:rojo;">**ACT. 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
* **ACT. Hora en HH:MM:SS**: formato\
  ^(\[0-1]\d|2\[0-3])(:\[0-5]\d){2}$
* **ACT. Dirección MAC**:\
  (\[0-9a-fA-F]{2}(\[:-]|$)){6}$|(\[0-9a-fA-F]{4}(\[.]|$)){3}

Hay una gran cantidad de expresiones regulares disponibles. Si no encuentras la que necesitas en esta lista, es una buena idea usar un motor de búsqueda.

Puedes probar cómodamente expresiones regulares en sitios web como: <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/es/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.
