#501 · Herramienta para desarrolladores

Comprobador de backtracking catastrófico en regex

Revisa una expresión regular antes de incorporarla a validaciones, filtros o rutas sensibles al rendimiento. El análisis es estático y señala patrones que suelen provocar explosión combinatoria, como cuantificadores anidados, repeticiones sobre grupos ambiguos y alternativas con prefijos solapados. No ejecuta cargas agresivas ni promete demostrar ausencia de ReDoS: entrega indicios, nivel de riesgo y puntos concretos que conviene simplificar.

Datos de entrada

Regex a analizar
Espacio publicitario

Cómo usar esta herramienta para desarrolladores

  1. Pega o carga el contenido que quieres analizar.
  2. Ajusta las opciones específicas del patrón o del lenguaje.
  3. Pulsa el botón principal o usa Ctrl/Cmd + Enter.
  4. Revisa el resultado, el resumen y las advertencias antes de copiar o descargar.

Qué hace esta herramienta para desarrolladores

Inspecciona la estructura del patrón sin ejecutar un ataque de rendimiento. Busca señales conocidas de riesgo y devuelve la posición aproximada de cada construcción problemática.

La heurística prioriza cuantificadores anidados, grupos repetidos que contienen repeticiones, alternativas con prefijos comunes y comodines amplios seguidos de repetición.

Un resultado de riesgo bajo no equivale a una prueba formal de seguridad. El comportamiento real depende del motor regex, los flags y el tipo de entrada.

Ejemplo

Entrada

^(a+)+$

Salida

Riesgo: ALTO
- Cuantificador anidado detectado cerca de (a+)+
Sugerencia: evita repetir un grupo que ya contiene una repetición.

Casos de uso

  • Revisar validadores antes de publicarlos en una API.
  • Auditar regex procedentes de reglas configurables por usuarios.
  • Detectar patrones sospechosos durante una revisión de código.
  • Priorizar expresiones que necesitan pruebas de rendimiento específicas.

Consejos para obtener resultados fiables

  • Prefiere clases y límites concretos frente a comodines amplios.
  • Evita repetir grupos que ya contienen * o + cuando puedan consumir el mismo texto.
  • Reduce alternativas con prefijos comunes o reescríbelas de forma determinista.
  • Prueba patrones críticos con longitudes crecientes en el motor real de producción.
  • Limita la longitud de entradas no confiables aunque el patrón parezca seguro.

Detalles del procesamiento

El analizador recorre caracteres, grupos, alternativas y cuantificadores con una heurística conservadora. También intenta localizar construcciones como (.+)+, (a*)* y alternativas repetidas con prefijos potencialmente solapados.

No implementa el autómata completo de ningún motor ni mide complejidad asintótica exacta. Lookarounds, backreferences y extensiones específicas pueden requerir revisión manual.

Preguntas frecuentes

¿Cómo detectar si una regex puede sufrir ReDoS por backtracking catastrófico?

Busca cuantificadores anidados y caminos alternativos que puedan consumir el mismo texto de muchas formas; este comprobador marca esas estructuras para revisión.

¿Un patrón marcado como riesgo alto siempre bloqueará JavaScript?

No. Es una señal heurística. El impacto depende del motor, de los flags y, sobre todo, de entradas que fuercen muchos intentos fallidos.

¿Por qué (a+)+ suele considerarse una expresión regular peligrosa?

Porque la repetición exterior puede redistribuir los mismos caracteres entre múltiples repeticiones interiores, generando muchas combinaciones antes de fallar.

¿Los anchors ^ y $ eliminan el riesgo de backtracking catastrófico?

No necesariamente. Reducen posiciones de inicio posibles, pero una estructura ambigua dentro del patrón todavía puede provocar backtracking costoso.

¿Qué hago si necesito conservar una regex compleja en producción?

Limita la entrada, prueba casos adversos en el motor real y simplifica grupos ambiguos. Cuando exista soporte, considera motores o construcciones que eviten backtracking excesivo.

Resumen del procesamiento

MóduloComportamiento
EntradaProcesamiento local en el navegador
SalidaResultado copiable y descargable
RedNo se realizan solicitudes externas

Más herramientas de esta categoría

Consulta el hub de Formato de código y regex para ver validadores, formatters, utilidades de patrones y herramientas relacionadas.