Testador de Regex
- Escribe el patrón, sin las barras delimitadoras.
- Activa las flags que necesites: g, i, m, s, u o y.
- Pega el texto de prueba. Las coincidencias aparecen en tiempo real, con la posición de cada una y los grupos capturados.
- Si el patrón tiene un error de sintaxis, la herramienta lo avisa en lugar de intentar interpretarlo.
- g busca todas las apariciones, no solo la primera.
- i ignora mayúsculas y minúsculas.
- m hace que ^ y $ coincidan con el inicio y el fin de cada línea, no del texto entero.
- s hace que el punto coincida también con los saltos de línea.
- u activa el modo Unicode, necesario para \p{...} y para tratar los emoji correctamente.
- y ancla la búsqueda exactamente en la posición actual, sin avanzar buscando.
Los paréntesis crean un grupo capturado, numerado de izquierda a derecha. Aparecen en la lista de grupos de cada coincidencia.
Los grupos con nombre usan la forma (?<nombre>...) y resultan mucho más legibles cuando el patrón crece, sobre todo al extraer una fecha, un importe o un identificador de un texto estructurado.
Si solo necesitas agrupar para aplicar un cuantificador, sin guardar el resultado, usa (?:...). Eso evita capturas inútiles y deja la expresión más rápida.
Los cuantificadores anidados como (a+)+ pueden provocar backtracking catastrófico: ante una entrada que no coincide, el motor prueba un número explosivo de combinaciones y se bloquea. Es la base de los ataques conocidos como ReDoS.
La herramienta interrumpe el barrido tras 10.000 coincidencias, lo que protege la interfaz pero no sustituye a escribir un patrón bien formado.
Los patrones que coinciden con la cadena vacía reciben un tratamiento especial para no generar un bucle infinito: el cursor avanza manualmente cuando eso ocurre.
Este probador usa el motor de expresiones regulares de JavaScript. Las sintaxis de PCRE, Python o Go pueden divergir, sobre todo en lookbehind y en clases Unicode.
Preguntas frecuentes
No. Escribe solo el patrón. Las flags se eligen aparte, no al final de la expresión.
Porque cada lenguaje usa un motor distinto. JavaScript no admite algunas construcciones de PCRE, y el comportamiento de lookbehind y de las clases Unicode varía bastante entre implementaciones.
El capturado, con (...), guarda el fragmento para usarlo después. El no capturado, con (?:...), solo agrupa para aplicar un cuantificador o una alternancia, sin guardar nada.
Es un límite de protección. Los patrones muy abiertos sobre textos grandes generarían demasiados resultados y bloquearían la página.
No. El patrón y el texto se procesan en tu navegador y no se registra nada.