Tester de regex (matches en vivo, grupos, replace)
Escribe regex y texto — los matches se resaltan al teclear. Alterna flags (g/i/m/s/u), inspecciona grupos y previsualiza replace.
Cómo funciona
Qué hacen los flags
g (global): encuentra todos los matches, no solo el primero. Necesario para replace-all. i (insensible a mayúsculas): /[a-z]/i matchea ambos casos. m (multilínea): ^ y $ matchean en saltos de línea. s (dotall): . matchea también newlines. u (unicode): manejo correcto de code points sobre 0xFFFF (emoji, CJK en pares surrogate).
La mayoría empieza con /g/i/m. /s/ es útil para texto multilínea. /u/ se recomienda cuando puedes encontrar emoji o no-BMP — sin él /./ no matchea un emoji de 4 bytes como un solo carácter.
Grupos de captura y replace
Los paréntesis crean un grupo: /(\d{4})-(\d{2})/ sobre '2026-05' captura '2026' y '05' por separado. Referencia con $1, $2 en el reemplazo. Los nombrados usan (?<name>...) y se referencian con $<name>.
Trucos comunes: $& inserta el match completo. $1, $2 etc. insertan grupos. $$ inserta un $ literal. La vista previa aquí te deja comprobar antes de correr el patrón sobre datos reales — mucho más seguro que ejecutarlo sobre producción.
Trampas a vigilar
Escapado de barra invertida. Para matchear un '.' literal, usa '\.'. En código JS sería '\\.' pero aquí tecleas solo '\.' porque es el regex source.
Backtracking catastrófico. Patrones como /(a+)+/ sobre 'aaaa…!' tardan eternidades. Si tu test parece congelado, puede que tengas cuantificadores anidados. Simplifica o usa diseño cuidadoso (no hay grupos atómicos en JS).
Greedy vs lazy. /<.+>/ sobre '<a><b>' matchea '<a><b>' (greedy). /<.+?>/ matchea '<a>' (lazy). Elige según tu caso.
Preguntas frecuentes
›¿Qué flavor de regex usa?
ECMAScript JS (la del navegador). Difiere ligeramente de PCRE (PHP, .NET, Python).
›¿Por qué no funciona lookbehind?
Funciona en navegadores modernos — Chrome, Firefox, Safari, Edge soportan (?<=...) y (?<!...) desde 2021. Si no, tu navegador puede estar desactualizado.
›¿Qué hace 'u'?
Activa manejo correcto de Unicode. Un emoji 🎉 (par surrogate en UTF-16) se trata como un carácter con /u/, dos sin él.
›¿Cómo matcheo tab o newline?
\t para tab, \n para newline, \r retorno de carro, \s cualquier whitespace incluido todo lo anterior.
›¿Por qué mi replace no funciona?
Lo más común: olvidaste 'g' — sin 'g' replace solo cambia el primer match. Activa 'g' para reemplazar todo.
›¿Sirve para texto muy largo?
Sí, hasta unos pocos MB. Más allá el navegador se ralentiza. Evita patrones catastróficos en input largo.
›¿Los datos salen del navegador?
No. Patrón y texto se procesan solo localmente.
›¿Hay cheat sheet de regex?
Busca 'JavaScript regex cheat sheet'. La página RegExp de MDN es la referencia autoritativa.
Herramientas relacionadas
Última actualización: