Probador de expresiones regulares
Prueba expresiones regulares de JavaScript contra texto de muestra con resaltado en vivo, grupos de captura, grupos con nombre y una vista previa de reemplazo. Funciona por completo en tu navegador.
- Los archivos nunca salen de tu dispositivo
- Gratis, sin registro
- Sin marcas de agua
- Funciona sin conexión una vez cargado
Cómo probador de expresiones regulares
- 1
Introduce tu patrón
Escribe la expresión y elige los indicadores que necesites.
- 2
Añade texto de prueba
Las coincidencias se resaltan mientras escribes, con cada grupo de captura listado.
- 3
Prueba un reemplazo
La pestaña de reemplazo previsualiza el resultado usando referencias estilo $1.
Por qué el resaltado en vivo supera a leer un patrón en tu cabeza
Una expresión regular es genuinamente difícil de rastrear mentalmente contra texto real — un patrón como `(\d{3})-(\d{2})-(\d{4})` es lo bastante legible como descripción abstracta, pero confirmar que coincide exactamente con las subcadenas previstas, y solo esas, contra un bloque específico de texto de muestra es un tipo de comprobación distinto a leer el patrón y razonar sobre él. Resaltar cada coincidencia directamente en el texto de muestra mientras se escribe el patrón convierte ese razonamiento abstracto en una confirmación visual concreta e inmediata — las coincidencias aparecen donde se esperaba o no aparecen, sin necesidad de simulación mental.
Esto se vuelve especialmente valioso para cualquier cosa que use lookahead, lookbehind, o cuantificadores no codiciosos, donde los límites reales de coincidencia frecuentemente no son lo que alguien adivinaría solo leyendo el patrón. Ver exactamente dónde empieza y termina una coincidencia, en lugar de asumir, detecta un error de límite de uno de más al instante en lugar de después de que se haya publicado dentro de una función de validación.
El regex de JavaScript no es el mismo lenguaje que PCRE o el re de Python
La sintaxis de expresiones regulares se ve ampliamente similar entre lenguajes, pero las características específicas admitidas difieren de formas que importan una vez que un patrón usa algo más allá de lo básico. JavaScript carece de cuantificadores posesivos y grupos atómicos, ambos existentes en PCRE (usado por PHP y muchas otras herramientas) como formas de prevenir explícitamente ciertos patrones de retroceso. Las aserciones lookbehind, ahora admitidas en JavaScript, llegaron considerablemente más tarde que lookahead y no estaban disponibles en versiones más antiguas de navegadores, lo cual todavía importa ocasionalmente para código que tiene que ejecutarse en entornos heredados. Y `\d` en un patrón de JavaScript coincide solo con dígitos ASCII 0–9 a menos que el patrón también lleve el indicador `u` (Unicode), lo que sorprende a cualquiera que asuma que se comporta igual que una clase de dígitos consciente de Unicode en el motor regex de otro lenguaje. Probar un patrón destinado específicamente a JavaScript, en lugar de copiar un ejemplo escrito para Python o una herramienta de shell, es en torno a lo que está construida esta herramienta.
Retroceso catastrófico, y por qué el probador tiene un presupuesto de tiempo
Ciertos patrones regex — más comúnmente los que tienen cuantificadores anidados, como `(a+)+b` — tienen una propiedad patológica donde, contra una cadena larga que en última instancia no coincide, el motor explora un número exponencialmente creciente de formas de retroceder antes de rendirse. Un patrón que devuelve resultados al instante contra una cadena de diez caracteres que no coincide puede tardar más que la edad del universo contra una de cincuenta caracteres, lo cual no es una exageración sino el comportamiento matemático literal del crecimiento exponencial. Esta es una clase de vulnerabilidad real y explotable en sistemas de producción — un ReDoS, o denegación de servicio por expresión regular — donde un atacante que puede controlar la cadena de entrada a un patrón vulnerable puede colgar indefinidamente un proceso de servidor con una sola solicitud.
Esta herramienta aborta la evaluación después de un presupuesto de tiempo corto específicamente para que un patrón con esta propiedad congele la sesión de prueba en lugar de la pestaña del navegador por completo, y alcanzar ese abortar es en sí mismo información útil: significa que el patrón probablemente tiene exactamente esta vulnerabilidad y necesita reestructurarse, típicamente haciendo más específico un cuantificador interno para que la ambigüedad que causa el retroceso exponencial no pueda surgir en primer lugar.
Preguntas frecuentes
¿Qué dialecto de regex es este?
JavaScript (ECMAScript), que es lo que se ejecuta en tu navegador. Difiere de PCRE y Python en algunos puntos — sin lookbehind en navegadores muy antiguos, sin cuantificadores posesivos ni grupos atómicos, y `\d` coincide solo con dígitos ASCII a menos que uses el indicador `u`.
¿Qué cambia realmente el indicador global?
Sin `g`, solo se encuentra la primera coincidencia. Con él, se devuelven todas las coincidencias — que es lo que quieres para resaltar o reemplazar en todo un documento. Esta herramienta muestra todas las coincidencias de todos modos, pero el indicador sigue afectando cómo se comporta `replace`.
¿Por qué mi patrón agotó el tiempo?
Algunos patrones retroceden catastróficamente — cuantificadores anidados como `(a+)+b` pueden tomar tiempo exponencial en una cadena que no coincide. La herramienta aborta después de un presupuesto de tiempo corto en lugar de congelar tu pestaña. Si ocurre, el arreglo casi siempre es hacer más específico el cuantificador interno.
¿Cómo uso grupos de captura en un reemplazo?
Referéncialos como `$1`, `$2` y así sucesivamente, o `$<nombre>` para grupos con nombre escritos `(?<nombre>…)`. Usa `$&` para toda la coincidencia y `$$` para un signo de dólar literal.
También podrías necesitar
Formateador de JSON
Formatea, valida y minifica JSON al instante
Codificador y decodificador de URL
Codifica y decodifica URL y cadenas de consulta con codificación porcentual
Eliminar líneas duplicadas
Deduplica, ordena y limpia listas
Codificador y decodificador Base64
Codifica y decodifica Base64 y Base64URL
Formateador de CSS
Embellece o minifica hojas de estilo
Minificador de CSS
Reduce hojas de estilo con un minificador que realmente entiende CSS
Generador de hash
MD5, SHA-1, SHA-256, SHA-384 y SHA-512
Formateador de HTML
Embellece e indenta HTML correctamente