Herramientas

Tester de Regex Online Gratuito

Prueba y depura expresiones regulares JavaScript en tu navegador. Ve las coincidencias resaltadas en tiempo real, inspecciona los grupos de captura y previsualiza los reemplazos. Nada se envía nunca a un servidor.

Flags
Patrones Rápidos

Resultados de Coincidencias

Todas las coincidencias se calculan localmente en tu navegador. Tus patrones y texto nunca se suben, almacenan ni registran.

¿Qué es una Expresión Regular?

Una expresión regular (regex) es una secuencia de caracteres que define un patrón de búsqueda. En lugar de buscar una cadena fija, una regex describe la forma del texto que quieres encontrar — dígitos, palabras, direcciones de correo, fechas y más. Esto convierte la búsqueda por patrones en una de las herramientas más potentes para desarrolladores, analistas de datos y administradores de sistemas, que la usan a diario para validar entradas, buscar en registros y transformar texto de forma rápida y fiable.

Flags de Regex JavaScript Explicadas

g global — encuentra todas las coincidencias de la cadena, no solo la primera.
i insensible a mayúsculas — las letras coinciden sin importar mayúsculas o minúsculas.
m multilínea — los anclajes ^ y $ coinciden con el inicio y el final de cada línea, no solo de toda la cadena.
s dotAll — el punto . también coincide con los saltos de línea.
u unicode — habilita la coincidencia Unicode completa, incluidos los puntos de código por encima de U+FFFF.

Referencia de Patrones Regex Comunes

Patrón Regex Coincide
Correo /[^\s@]+@[^\s@]+\.[^\s@]+/ hello@charcount.app
URL /https?:\/\/[^\s]+/ https://charcount.app
IPv4 /\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/ 192.168.0.1
Fecha (AAAA-MM-DD) /\d{4}-\d{2}-\d{2}/ 2026-06-30
Color Hex /#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})\b/ #4338ca
UUID v4 /[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab]…/i 9f1c…5b6c

Grupos de Captura en Regex

Los paréntesis permiten capturar partes de una coincidencia para extraerlas o reutilizarlas. Hay tres tipos:

  • ( ) — grupo de captura: almacena lo que coincidió, accesible como $1, $2, … en los reemplazos.
  • (?: ) — grupo sin captura: agrupa el patrón para alternancias o cuantificadores sin almacenarlo.
  • (?<name> ) — grupo con nombre: captura con un nombre legible, accesible como groups.nombre.

Por ejemplo, analizar una fecha con tres grupos: (\d{4})-(\d{2})-(\d{2})

Preguntas Frecuentes

.* es codicioso (greedy): coincide con la mayor cantidad de texto posible y luego retrocede si es necesario. .*? es perezoso (lazy, no codicioso): coincide con lo mínimo posible y solo se expande cuando se ve obligado. Por ejemplo, sobre el texto "<a><b>", el patrón <.*> coincide con todo "<a><b>", mientras que <.*?> solo coincide con "<a>". Usa la versión perezosa cuando quieras la coincidencia más corta posible, como al analizar etiquetas HTML individuales.

Caracteres como . ( ) [ ] { } + * ? ^ $ | \ tienen un significado especial en regex, así que para coincidir con ellos literalmente debes escaparlos con una barra invertida. Escribe \. para un punto literal, \( para un paréntesis de apertura literal y \\ para una barra invertida literal. Dentro de una clase de caracteres, por ejemplo [.], la mayoría de estos caracteres pierden su significado especial y no necesitan escaparse.

La mayoría de los testers online usan por defecto el motor PCRE, mientras que esta herramienta y tu navegador usan el motor JavaScript (ECMAScript), al que le faltan algunas funciones. JavaScript no admite lookbehind en motores antiguos, cuantificadores posesivos, recursión ni flags en línea como (?i). Asegúrate de que tu tester esté configurado en el sabor JavaScript para que el comportamiento coincida con el de tu código.

El flag g (global) hace que la regex encuentre todas las coincidencias de la cadena en lugar de detenerse en la primera. Lo necesitas con métodos como matchAll() o replaceAll(), o para reemplazar todas las apariciones con replace(). Sin g, métodos como replace() solo cambian la primera coincidencia. Ten en cuenta que una regex global mantiene un estado lastIndex, así que reutilízala con cuidado al llamar a exec() en un bucle.