Encoders & Utilities

Probador de regex

Prueba regex JavaScript con resaltado en vivo, grupos de captura y vista previa de replace.

g (global), i (case-insensitive), m (multiline), s (dotall), u (unicode), y (sticky)

Quick reference

\d Digit (0–9)
\w Word char (a-z, 0-9, _)
\s Whitespace
[^abc] Anything except a/b/c
^/$ Start / end of line (with m flag)
a* Zero or more
a+ One or more
a? Zero or one
a{n,m} Between n and m repetitions
(?<name>…) Named capture group
(?=…) Lookahead
(?<=…) Lookbehind

Sobre esta herramienta

Regex Tester evalúa expresiones regulares de JavaScript contra un texto de prueba y resalta cada coincidencia en su lugar. El campo del patrón acepta la sintaxis completa de regex de ECMAScript — anclas, clases de caracteres, alternación, lookahead, lookbehind, grupos de captura nombrados, escapes de propiedades Unicode — con interruptores separados para los flags estándar (g global, i ignora mayúsculas, m multilínea, s el punto cubre saltos de línea, u Unicode, y sticky). Las coincidencias se colorean y los grupos de captura se listan debajo de cada resaltado.

Más allá de la búsqueda, la herramienta puede ejecutar una vista previa de reemplazo en paralelo con el original — escriba la cadena de reemplazo (con retrorreferencias $1 / $<nombre>) y vea exactamente lo que producirá su regex sobre el texto de prueba. Cada operación corre en su navegador con el motor nativo RegExp, así que lo que depura aquí es exactamente lo que se ejecutará en producción JavaScript (Node, Bun, Deno y todos los navegadores).

Cuándo utilizar esta herramienta

  • Construir validadores de entrada. Patrones de email, teléfono, código postal — diseñe y verifique con datos de prueba realistas antes de llevarlos al código.
  • Analizar ficheros de log. Itere un patrón con múltiples capturas contra líneas reales hasta que cada campo salga limpio.
  • Edición masiva. Pruebe un patrón find/replace antes de ejecutarlo sobre cientos de ficheros en su editor.
  • Aprender regex. Coincidencias resaltadas más feedback instantáneo es la forma más rápida de interiorizar lookaround, anclas y retrorreferencias.

Sobre los sabores de regex

Esta herramienta usa regex de JavaScript (ECMAScript 2018+). PCRE, Python, .NET, Go y Java difieren ligeramente — PCRE soporta patrones recursivos que JavaScript no tiene, el módulo re de Python carece de lookbehind en algunas versiones, Go usa RE2 que prohíbe retrorreferencias por completo. Si su objetivo es un entorno distinto de JS, verifique las características específicas del sabor en el extremo receptor. Para patrones puramente compatibles con ECMAScript esta herramienta es autoritativa.

Preguntas frecuentes

¿Cuál es la diferencia entre los flags g, m y s?

g (global) hace que .match() y .replace() encuentren todas las coincidencias en vez de solo la primera. m (multilínea) hace que ^ y $ coincidan en los saltos de línea dentro del texto, no solo al inicio/fin de la cadena entera. s (dotall) hace que . también coincida con saltos de línea (por defecto los omite). Son independientes — combine como necesite.

¿Por qué no funciona mi lookbehind?

El lookbehind (?<=...) requiere ECMAScript moderno (2018+) y está disponible en todos los navegadores evergreen actuales y Node 10+. Runtimes antiguos (IE 11, Safari anterior a 16.4, Node muy viejo) rechazan el patrón en tiempo de compilación. Nuestro tester usa el motor del navegador, así que si su tester funciona pero el runtime de destino falla, el destino es demasiado antiguo. Solución: reescribir sin lookbehind usando un grupo no capturador y un corte de cadena.

¿Cómo pruebo contra una cadena larga?

Péguela en el panel de texto de prueba — no hay tope de longitud más allá de lo que pueda alojar el navegador. Para ficheros, pegue su contenido directamente. Las coincidencias resaltadas se mantienen sincronizadas al desplazar. Para entradas extremas (megabytes de texto más un regex con retroceso catastrófico) la página puede congelarse brevemente; si ocurre, simplifique el regex o divida la entrada.

¿Qué es el «retroceso catastrófico»?

Un patrón que tarda tiempo exponencial sobre ciertas entradas — típicamente cuantificadores anidados como (a+)+ contra una cadena larga que termina en no-coincidencia. El motor de regex prueba cada permutación antes de rendirse. Los motores JavaScript modernos no tienen timeout, así que la página puede colgarse. Solución: reescriba sin cuantificadores anidados, use grupos posesivos vía (?:a+), o ancle el patrón más estrictamente.