Categorías

Verificador de Regex

Detecta patrones de regex propensos a errores y riesgosos, verifica backtracking catastrófico, patrones sin anclar y proporciona sugerencias de reescritura

Verificador de Regex

Resumen

El Verificador de Regex analiza expresiones regulares en busca de anti-patrones comunes, problemas de rendimiento y problemas de corrección. Le ayuda a escribir expresiones regulares mejores, más seguras y más eficientes.

Problemas Detectados

Problemas Críticos (Rendimiento)

  • Backtracking Catastrófico: Cuantificadores anidados como (a+)+ que pueden causar complejidad de tiempo exponencial
  • Comportamiento Cuadrático: Patrones como (.*)* que muestran rendimiento O(n²)
  • Repeticiones Sin Límite: Cuantificadores codiciosos sin límites de longitud máxima

Problemas de Error (Corrección)

  • Puntos Sin Escapar: Usar . cuando quieres decir . (punto literal)
  • Faltan Anclas: Patrones que pueden coincidir en cualquier parte del texto
  • Clases de Caracteres Inválidas: Rangos como [a-Z] que incluyen caracteres inesperados
  • Escapes Octales: Escapes ambiguos en regex moderno

Problemas de Advertencia (Legibilidad)

  • No Codicioso Observable: Patrones .*? que podrían usar clases de caracteres negados
  • Escapes Redundantes: Barras invertidas innecesarias como \-
  • Doble Negación: Patrones confusos [^[^]]
  • Alternación Ambigua: a|ab donde el orden importa

Problemas de Información (Estilo)

  • Grupos No Capturantes: Sugerir (?:...) cuando los grupos no se referencian
  • Patrones Verbosos: Puede simplificar ddd a d{3}

Datos clave

Categoría
Development
Tipos de entrada
text, select, checkbox
Tipo de salida
json
Cobertura de muestras
4
API disponible
Yes

Resumen

El Verificador de Regex analiza expresiones regulares para detectar anti-patrones comunes, problemas de rendimiento como el backtracking catastrófico, y errores de corrección. Obtén sugerencias de reescritura para crear patrones más seguros, eficientes y compatibles con múltiples lenguajes de programación.

Cuándo usarlo

  • Antes de desplegar un patrón regex en producción para evitar bloqueos por complejidad exponencial
  • Cuando un regex existente causa tiempos de respuesta lentos o timeouts inesperados
  • Al migrar expresiones regulares entre lenguajes como JavaScript, Python o Java

Cómo funciona

  • Ingresa tu patrón regex en el campo principal y opcionalmente especifica banderas como g, i o m
  • Selecciona el dialecto objetivo (JavaScript, Python, PCRE, Go o Java) y el nivel de verificación
  • El analizador detecta problemas críticos de rendimiento, errores de corrección y advertencias de legibilidad
  • Revisa el reporte con sugerencias de reescritura para optimizar tu expresión regular

Casos de uso

Auditar expresiones regulares en validadores de formularios antes de producción
Optimizar patrones de búsqueda en logs que procesan millones de líneas
Revisar regex heredados durante migraciones entre lenguajes de programación

Ejemplos

1. Detectar backtracking catastrófico en validador de email

Desarrollador backend
Contexto
Un endpoint de registro usa un regex para validar emails que causa timeouts cuando recibe cadenas largas que no coinciden.
Problema
El patrón `^([a-zA-Z0-9]+\.)*[a-zA-Z0-9]+@([a-zA-Z0-9]+\.)*[a-zA-Z0-9]+$` tiene cuantificadores anidados que generan backtracking exponencial.
Cómo usarlo
Pegar el patrón en el campo 'Patrón Regex', seleccionar 'JavaScript' como dialecto y nivel 'Estándar'.
Resultado
El verificador reporta backtracking catastrófico y sugiere reemplazar `([a-zA-Z0-9]+\.)*` con `[a-zA-Z0-9.]*` para eliminar la recursión.

2. Migrar regex de Python a Java

Ingeniero de datos
Contexto
Se necesita migrar un parser de logs escrito en Python a Java. Varios patrones regex usan sintaxis específica de Python.
Problema
El patrón Python `(?P<timestamp>\d{4}-\d{2}-\d{2})` usa grupos con nombre que tienen sintaxis diferente en Java.
Cómo usarlo
Ingresar el patrón, seleccionar 'Java' como dialecto objetivo y activar 'Incluir Sugerencias de Reescritura'.
Resultado
El verificador indica que Java usa `(?<timestamp>...)` para grupos con nombre y sugiere la sintaxis correcta para el dialecto objetivo.

3. Optimizar regex de búsqueda en logs

DevOps engineer
Contexto
Un script de monitoreo busca patrones de error en logs de 10GB. La expresión actual tarda más de 30 minutos.
Problema
El patrón `.*ERROR.*Exception.*` usa cuantificadores codiciosos sin anclas que fuerzan backtracking innecesario.
Cómo usarlo
Pegar el patrón, seleccionar 'PCRE' como dialecto y nivel 'Estricto' para obtener todas las recomendaciones.
Resultado
Se detectan puntos sin escapar y se sugiere usar `ERROR[^\n]*Exception` con clase de caracteres negada para evitar backtracking en cada línea.

Probar con muestras

regex

Hubs relacionados

Preguntas frecuentes

¿Qué es el backtracking catastrófico?

Ocurre cuando cuantificadores anidados como `(a+)+` generan complejidad exponencial, haciendo que el regex se cuelgue en entradas largas.

¿Qué dialectos regex son compatibles?

JavaScript, Python, PCRE, Go (RE2) y Java. Cada uno tiene diferencias sintácticas que el verificador tiene en cuenta.

¿Cuál es la diferencia entre los niveles de verificación?

Básico detecta solo problemas críticos de rendimiento. Estándar incluye errores y advertencias. Estricto reporta todos los problemas incluyendo estilo.

¿Puedo verificar regex con banderas específicas?

Sí, puedes especificar banderas como g (global), i (insensible a mayúsculas), m (multilínea) y otras en el campo correspondiente.

¿El verificador modifica mi patrón original?

No, solo analiza y reporta problemas. Las sugerencias de reescritura son opcionales y puedes aplicarlas manualmente.

Documentación de la API

Punto final de la solicitud

POST /es/api/tools/regex-linter

Parámetros de la solicitud

Nombre del parámetro Tipo Requerido Descripción
regexPattern text -
regexFlags text No -
targetDialect select No -
checkLevel select No -
includeSuggestions checkbox No -

Formato de respuesta

{
  "key": {...},
  "metadata": {
    "key": "value"
  },
  "error": "Error message (optional)",
  "message": "Notification message (optional)"
}
Datos JSON: Datos JSON

Documentación de MCP

Agregue este herramienta a su configuración de servidor MCP:

{
  "mcpServers": {
    "elysiatools-regex-linter": {
      "name": "regex-linter",
      "description": "Detecta patrones de regex propensos a errores y riesgosos, verifica backtracking catastrófico, patrones sin anclar y proporciona sugerencias de reescritura",
      "baseUrl": "https://elysiatools.com/mcp/sse?toolId=regex-linter",
      "command": "",
      "args": [],
      "env": {},
      "isActive": true,
      "type": "sse"
    }
  }
}

Puede encadenar múltiples herramientas, por ejemplo: `https://elysiatools.com/mcp/sse?toolId=png-to-webp,jpg-to-webp,gif-to-webp`, máximo 20 herramientas.

Si encuentra algún problema, por favor, póngase en contacto con nosotros en [email protected]