Probador de expresiones regulares (regex)

Prueba un regex de JavaScript: coincidencias, grupos y vista previa del reemplazo.

Sintaxis de JavaScript (ECMAScript), escrita sin las barras.

Indicadores

Usa $1, $<nombre>, $& para toda la coincidencia y $$ para un signo de dólar.

Coincidencias

Escribe un patrón para ver las coincidencias.

Qué hace esta herramienta

Una expresión regular (regex) es un patrón breve que describe un conjunto de cadenas, por ejemplo "cuatro dígitos, un guion y dos dígitos" o "todo lo que hay entre corchetes angulares". Esta herramienta prueba un patrón sobre tu texto mientras escribes: resalta cada coincidencia, indica su posición, muestra qué capturó cada grupo y previsualiza un reemplazo como $2, $1. Lo que pegas no se sube a ningún sitio: la búsqueda se ejecuta en tu navegador.

Usa el motor de expresiones regulares del propio navegador, es decir, el dialecto de JavaScript (ECMAScript). Es el adecuado para JavaScript, TypeScript y Node.js. Python, PHP o Java tienen pequeñas diferencias, así que conviene revisar sus particularidades en la documentación de cada lenguaje.

Cómo probar un patrón

  1. Escribe el patrón en la primera caja, sin las barras que lo rodean. \d{4}-\d{2} es el patrón; /\d{4}-\d{2}/g es como se escribe en el código.
  2. Activa los indicadores que necesites. g viene activado para encontrar todas las coincidencias y no solo la primera.
  3. Pega o escribe el texto de prueba. Las coincidencias se resaltan con dos colores alternos para distinguir las que están juntas.
  4. Lee la tabla de abajo: cada coincidencia con su posición inicial y final, y una fila por grupo de captura. Un grupo que no participó lo indica, algo distinto de un grupo que capturó una cadena vacía.
  5. Para reescribir el texto rellena "Reemplazar por". Sigue las reglas de String.prototype.replace: $1 es el grupo 1, $<nombre> un grupo con nombre, $& toda la coincidencia y $$ un signo de dólar.

Indicadores

i ignora mayúsculas, m hace que ^ y $ coincidan en cada línea, s deja que el punto incluya saltos de línea, u lee el texto por puntos de código (un emoji cuenta como un carácter), v es una versión más estricta de u e y solo coincide justo donde empieza la búsqueda. Las posiciones se cuentan en unidades UTF-16 desde 0, como hace JavaScript.

Ejemplo

Con el texto 2026-10-13 y el patrón (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) hay una coincidencia en la posición 0 de 10 caracteres con tres grupos: 2026, 10 y 13. Si "Reemplazar por" es $<day>/$<month>/$<year>, la vista previa muestra 13/10/2026. Otro caso: en <b>negrita</b> y <i>cursiva</i>, el patrón <.+> captura toda la cadena porque .+ toma todo lo que puede, mientras que <.+?> captura cada etiqueta por separado.

Por qué un patrón puede colgarse

Algunos patrones tardan el doble con cada carácter añadido: es el retroceso catastrófico. El caso clásico es ^(a+)+$ sobre una larga serie de aes seguida de una b. En un servicio web esto es un riesgo de denegación de servicio (ReDoS). Esta página ejecuta la búsqueda en un worker en segundo plano y la detiene a los 2 segundos, así que la pestaña no se bloquea. La solución suele ser quitar la repetición anidada: ^a+$ da el mismo resultado al instante.

Errores habituales

  • Olvidar escapar: el punto coincide con cualquier carácter; para un punto literal escribe \..
  • Esperar que ^ y $ funcionen por líneas sin el indicador m.
  • Olvidar g al reemplazar, y que solo cambie la primera coincidencia.
  • Pegar el patrón con sus barras e indicadores, como /ab+c/gi. Escribe solo lo que va entre las barras y usa los botones de indicadores.

Para ver qué cambió un reemplazo pega las dos versiones en el comparador de textos. Y si quieres programar una tarea en lugar de buscar texto, el explicador de cron lee un horario en palabras.

Preguntas frecuentes

¿Qué dialecto de regex usa?

El de JavaScript (ECMAScript) de tu propio navegador. Sirve para JavaScript, TypeScript y Node.js. En Python, PHP, Java o .NET la mayoría de los patrones comunes funcionan igual, pero revisa las funciones propias de cada lenguaje.

¿Se sube mi texto a algún servidor?

No. El patrón y el texto se quedan en tu navegador y los procesa un worker en tu dispositivo. No se envía nada por la red.

¿Por qué se detuvo mi patrón a los 2 segundos?

Probablemente sufre retroceso catastrófico: repeticiones anidadas como (a+)+ sobre un texto largo obligan al motor a probar un número exponencial de caminos. La herramienta lo detiene para que la página siga funcionando. Simplifica el patrón o limita las repeticiones.

¿Por qué las posiciones no coinciden con mi editor?

Aquí son índices de cadena de JavaScript, en unidades UTF-16 desde 0. Un emoji ocupa dos unidades y un editor puede contar por líneas y columnas.