Probar regex: tester de expresiones regulares
Para probar regex, escribe un patrón, elige los flags y pega tu texto de prueba: el tester de regex muestra cada coincidencia con su índice, el contenido de los grupos de captura numerados y con nombre y explica cada parte del patrón en lenguaje sencillo. La búsqueda usa el motor JavaScript de tu navegador (ECMAScript).
Fuente: ECMA-262 § 22.2, ECMA-262 – ECMAScript Language Specification, RegExp (Regular Expression) Objects. Actualizado: .
Cómo se calcula
Este tester de regex usa la variante JavaScript de las expresiones regulares, tal como la define el estándar ECMA-262 y la implementa tu navegador. Un patrón que funciona aquí funciona exactamente igual en String.prototype.match, matchAll, replace y RegExp.prototype.test, ya sea en Chrome, Firefox, Safari o Node.js.
Cómo probar una regex
- Escribe el patrón sin las barras que lo rodean, por ejemplo
\d+. - Marca las banderas que necesites (g para todas las coincidencias, i para ignorar mayúsculas…).
- Pega el texto de prueba y revisa las coincidencias, los grupos y la explicación del patrón.
Ejemplo: el patrón \d{4} con la bandera g encuentra 2 coincidencias en «Nacido en 1990, mudanza en 2015»: 1990 en la posición 10 y 2015 en la posición 27 (las posiciones empiezan en 0).
Cómo leer el resultado
- Coincidencias: cada coincidencia con su índice (posición del carácter empezando en cero, contada en unidades UTF-16 como hace JavaScript: un emoji cuenta como 2) y su longitud. Los saltos de línea se muestran como ↵ y los tabuladores como ⇥.
- Grupos por coincidencia: lo que capturó cada par de paréntesis, tanto los grupos numerados
( )como los grupos con nombre(?<nombre> ). «No participó» significa que el grupo está en una alternativa que no se usó. Con el flagdtambién ves la posición de cada grupo. - Patrón explicado: cada elemento en lenguaje sencillo; las filas con sangría (›) están dentro de un grupo.
Los flags
g busca todas las coincidencias en lugar de solo la primera, i ignora mayúsculas y minúsculas, m hace que ^ y $ funcionen por línea y s permite que el punto reconozca saltos de línea. u trata los emojis y demás caracteres fuera del plano multilingüe básico como un solo carácter y activa propiedades Unicode como \p{L} (cualquier letra, incluidas á o ñ). v es la versión más reciente de u, con operaciones de conjuntos como [\p{L}--[a-z]]; u y v no se pueden combinar. y («sticky») solo encuentra coincidencias que van seguidas sin huecos.
Protección contra bucles infinitos y bloqueos
Patrones como a* o \b pueden producir coincidencias vacías. Igual que JavaScript, el tester avanza entonces un carácter (un punto de código completo con u/v), así que no hay bucle infinito. Se buscan como máximo 1000 coincidencias.
El peligro mayor es el backtracking catastrófico (ReDoS): cuantificadores anidados como (a+)+$ prueban un número exponencial de combinaciones en un texto que no coincide; 30 caracteres pueden mantener ocupado el motor durante minutos. Por eso la búsqueda se ejecuta en un hilo aparte en segundo plano y se detiene a los 2 segundos; la página sigue respondiendo. Evita también esos patrones en tu propio código, sobre todo con datos que introducen los usuarios.
Diferencias con otras variantes de regex
PCRE (PHP), Python, Java y .NET difieren en los detalles: JavaScript no tiene cuantificadores posesivos (a++), ni grupos atómicos, ni las anclas \A o \Z; \w solo abarca A–Z, a–z, 0–9 y el guion bajo. Para letras con tilde o la ñ, usa \p{L} con el flag u.
Tu texto de prueba no se envía, no se guarda y no se escribe en el enlace; solo el patrón y los flags.
Más herramientas para desarrolladores: revisa JSON con el validador JSON, XML y CSV con el validador XML y CSV y codifica texto con el codificador Base64.
Preguntas frecuentes
¿Cómo pruebo una expresión regular?
Escribe el patrón sin barras en el campo superior, marca los flags que necesites y pega tu texto. Todas las coincidencias se resaltan al instante en el texto y aparecen en una lista con su índice; debajo ves lo que capturó cada grupo.
¿Por qué \w no reconoce la ñ ni las letras con tilde?
En JavaScript, \w solo equivale a A–Z, a–z, 0–9 y _. Para letras de cualquier idioma, usa \p{L} con el flag u, p. ej. [\p{L}\d_]+ para una palabra como «año» o «canción».
¿Qué diferencia hay entre codicioso (greedy) y perezoso (lazy)?
Los cuantificadores codiciosos (*, +, {2,}) toman todo el texto posible; los perezosos, con un signo de interrogación detrás (*?, +?), el mínimo posible. En «<b>x</b>», <.+> reconoce la cadena entera y <.+?> solo «<b>».
¿Cómo le doy nombre a un grupo de captura?
Usa (?<nombre>…). En el código lo lees con match.groups.nombre, en un texto de reemplazo con $<nombre> y dentro del propio patrón con la referencia inversa \k<nombre>.
¿Por qué se detuvo mi búsqueda?
Tardó más de 2 segundos, normalmente por un backtracking catastrófico con cuantificadores anidados como (\w+)*. Simplifica el patrón: no anides cuantificadores, haz que las alternativas no sean ambiguas y ánclalo con ^ y $.
¿El resultado también vale para PHP o Python?
Con patrones sencillos suele valer, pero solo está garantizado para JavaScript. PHP (PCRE) y Python admiten sintaxis adicional, como cuantificadores posesivos o \A, y Python escribe tradicionalmente los grupos con nombre como (?P<nombre>…).
Fuentes y base legal
- ECMA-262 § 22.2: ECMA-262 – ECMAScript Language Specification, RegExp (Regular Expression) Objects
- MDN Web Docs – Regular expressions (Guide)
- MDN Web Docs – RegExp.prototype.flags
- MDN Web Docs – String.prototype.matchAll() (empty matches, lastIndex)
- OWASP – Regular expression Denial of Service (ReDoS)
Última actualización: · Principios editoriales
Herramientas relacionadas
- Formateador, validador y minificador de JSONValida JSON según la RFC 8259 con línea, columna y explicación clara del error. Formatea o minifica, ordena claves y copia. Funciona en tu navegador.
- Validador de XML y CSV onlineComprueba si tu XML está bien formado y valida CSV según la RFC 4180: errores con línea y columna, separador detectado y vista previa. Sin subir nada.
- Codificar y decodificar Base64Codifica y decodifica Base64 y Base64url con UTF-8 correcto, y también URL encode/decode (codificación por porcentaje). Errores claros, todo en tu navegador.
- Generador de hash: SHA-256, SHA-512, SHA-1, MD5Calcula hashes SHA-256, SHA-384, SHA-512, SHA-1 y MD5 de textos o archivos y verifica sumas de comprobación, en tu navegador, sin subir nada y gratis.
- Validar correo electrónico: sintaxis de direccionesComprueba una o varias direcciones de correo según RFC 5321/5322: longitudes, dominio, dominios con acentos o ñ (Punycode). En local, sin enviar nada.
- Cuál es mi dirección IPMuestra al instante tu dirección IP pública, detecta si es IPv4 o IPv6 y explica la diferencia. Gratis: tu IP no se guarda.
- Generador cron: crear y explicar una expresión cronGenerador cron y explicador: construye o pega una expresión, léela en lenguaje claro y mira las próximas ejecuciones. Unix, Spring y Quartz, en local.
- Convertir JSON a TypeScriptConvertir JSON a TypeScript: genera tipos, interfaces o esquema JSON a partir de datos de ejemplo, con campos opcionales. En el navegador, sin subir nada.
- Minificar JavaScriptMinificar JavaScript: quita comentarios y espacios, reduce el código y mira el ahorro en bytes. En el navegador, sin subir nada.