Probador de expresiones regulares
Prueba expresiones regulares de JavaScript en directo con coincidencias resaltadas, grupos de captura, reemplazo y una explicación de cada elemento.
| # | Posición | Coincidencia | Grupos |
|---|
Explicación del patrón
Atención: un grupo repetido contiene otro cuantificador abierto, por ejemplo (a+)+. Estos patrones pueden tardar un tiempo exponencial con textos que casi coinciden (backtracking catastrófico).
Cómo usar el probador de regex
- Escribe tu patrón en Expresión regular, sin las barras que lo rodean. Las barras y los flags activos se muestran alrededor del campo, como en
/patrón/g. - Marca los Flags que necesites:
g(global),i(ignorar mayúsculas y minúsculas),m(multilínea),s(dotAll),u(unicode) oy(sticky). - Pega el texto en el que buscar en Texto de prueba. Las coincidencias se resaltan mientras escribes y la tabla enumera cada una con su posición y sus grupos de captura.
- Para probar una sustitución, rellena Reemplazo. El cuadro Resultado tras el reemplazo muestra el texto con cada coincidencia sustituida, listo para copiar.
- Lee la Explicación del patrón para comprobar qué hace cada parte de tu regex. ¿No sabes por dónde empezar? Pulsa Cargar un ejemplo.
Qué muestra el probador
- Coincidencias resaltadas: cada coincidencia del texto de prueba queda marcada, así que ves de un vistazo qué se captura y qué se escapa.
- Tabla de coincidencias: el número de cada coincidencia, su posición (desplazamiento en caracteres desde el principio, contando desde 0), el texto encontrado y el valor de cada grupo de captura. Los grupos con nombre, como
(?<year>\d{4}), aparecen con su nombre, y los grupos que no participaron en la coincidencia se muestran como «(sin coincidencia)». Se listan las 1000 primeras coincidencias. - Reemplazo: el texto de reemplazo usa la sintaxis de JavaScript:
$1o$2para los grupos numerados,$<name>para los grupos con nombre,$¶ la coincidencia completa y$$para un signo de dólar literal. Sin el flagg, solo se reemplaza la primera coincidencia. - Explicación: el patrón se divide en elementos (texto literal, clases de caracteres, anclas, grupos, cuantificadores, lookarounds, referencias inversas), cada uno con una breve descripción en español. Los grupos anidados aparecen sangrados, lo que facilita mucho revisar patrones largos.
Los flags en resumen
| Flag | Efecto |
|---|---|
g |
Encuentra todas las coincidencias en lugar de parar en la primera |
i |
No distingue entre mayúsculas y minúsculas |
m |
^ y $ coinciden al principio y al final de cada línea |
s |
. también coincide con los saltos de línea |
u |
Modo Unicode completo: \u{…}, \p{…} y los emojis se tratan como un solo carácter |
y |
Sticky: cada coincidencia debe empezar justo donde terminó la anterior |
Backtracking catastrófico
Algunos patrones tardan un tiempo exponencial con textos que casi coinciden. El ejemplo clásico es (a+)+$ aplicado a una larga serie de a seguida de una b: el motor prueba todas las formas de repartir las a entre los dos cuantificadores antes de rendirse. Este problema, conocido como ReDoS, ha llegado a tumbar sitios web reales.
Esta herramienta protege tu navegador de tres formas. La búsqueda se ejecuta en un worker en segundo plano que se detiene a los 1,5 segundos; el texto de prueba está limitado a 100 000 caracteres; y la explicación te avisa cuando un grupo repetido contiene otro cuantificador abierto. Si un patrón agota el tiempo, reescríbelo para que cada carácter solo pueda coincidir de una manera, por ejemplo a+$ en lugar de (a+)+$.
Preguntas frecuentes
¿Qué variante de regex usa esta herramienta?
Usa el motor JavaScript (ECMAScript) de tu navegador, exactamente como lo harían new RegExp() y String.prototype.replace() en tu código. La mayor parte de la sintaxis es común con PCRE, Python y Java, pero hay diferencias: los cuantificadores posesivos y los grupos atómicos no existen en JavaScript, y lookbehind es compatible con todos los navegadores actuales.
¿Por qué mi patrón solo encuentra una coincidencia?
El flag g está desactivado. Sin él, JavaScript se detiene tras la primera coincidencia y el reemplazo solo cambia esa.
¿Cómo busco un punto, un corchete o un signo de interrogación literal?
Escápalo con una barra invertida: \., \[, \?. La explicación marca los caracteres escapados como «(escapado)» para que puedas comprobarlo.
¿Se envía mi texto a algún sitio?
No. El patrón y el texto se procesan solo en tu navegador, lo que hace que esta herramienta sea segura para archivos de registro o datos que contienen información personal.
¿Por qué la posición no coincide con la columna de mi editor?
Las posiciones cuentan caracteres desde 0 a lo largo de todas las líneas, igual que match.index en JavaScript. Cada salto de línea cuenta como un carácter y un emoji fuera del plano multilingüe básico cuenta como dos.
Herramientas relacionadas
- Formateador y validador JSON Formateador y validador JSON gratuito que embellece, minifica y comprueba JSON en tu navegador, con los errores de sintaxis indicados por línea y columna.
- Codificador y decodificador de URL Codificador y decodificador de URL gratis. Codifica parámetros o URL completas, decodifica secuencias %XX y trata + como espacio en tu navegador.
- Generador de hash Genera hashes MD5, SHA-1, SHA-256 y SHA-512 de textos o de archivos de cualquier tamaño y verifica sumas de comprobación. Todo en tu navegador.