Patrones comunes
Coincidencias 0
| # | Coincidencia | Índice | Longitud |
|---|---|---|---|
| Sin coincidencias | |||
| # | Coincidencia | Índice | Longitud |
|---|---|---|---|
| Sin coincidencias | |||
Escribe tu expresión regular en el campo de patrón y elige los flags que necesites (global, ignorar mayúsculas, multilínea, dotall, unicode, sticky) con los botones de alternancia.
Pega o escribe tu texto de prueba en el área de texto. Las coincidencias se resaltan en tiempo real mientras escribes, con colores alternos para que las coincidencias contiguas se distingan.
Lee la tabla de coincidencias — muestra el número de cada coincidencia, su índice, longitud y cada grupo de captura en su propia columna, incluidos los grupos con nombre.
Abre el panel de Sustitución e introduce una cadena de reemplazo (admite $1, $<nombre> y $&) para previsualizar al instante el resultado reescrito.
Cada coincidencia se resalta directamente sobre tu texto de prueba mientras escribes, con un retardo para un rendimiento fluido. Las coincidencias contiguas alternan color para que veas dónde termina una y empieza la siguiente.
La tabla de resultados añade una columna por cada grupo de captura que defina tu patrón, incluidos los grupos con nombre mediante (?<nombre>…). Los grupos opcionales sin coincidencia se muestran explícitamente para depurar alternancias.
Introduce una cadena de reemplazo y observa cómo el resultado sustituido se actualiza al instante. Se admiten los tokens estándar — referencias $1, grupos con nombre $<nombre>, $& para toda la coincidencia y $$ para un dólar literal.
Activa los flags g, i, m, s, u e y de forma individual y observa cómo cambian los resultados. Los flags activos se muestran junto a tu patrón tal como aparecerían en un literal /patrón/flags.
Tu patrón y datos de prueba se evalúan por completo en tu navegador con el motor nativo de JavaScript. Nada se transmite nunca, a diferencia de herramientas que envían tu entrada a un servidor para procesarla.
A diferencia de las herramientas de regex online populares que envían tu expresión y texto de prueba a sus servidores, este probador ejecuta todo en tu navegador con el motor nativo RegExp. Muestras de logs sensibles, datos de usuarios o patrones propietarios nunca salen de tu dispositivo, y no se requiere cuenta.
Más allá de un simple coincide/no coincide, obtienes el índice y la longitud exactos de cada coincidencia más una columna dedicada por cada grupo de captura. Los grupos con nombre aparecen por su nombre. Es el nivel de detalle que necesitas para arreglar una alternancia rebelde o un cuantificador codicioso.
Como la herramienta usa el propio motor de regex de JavaScript del navegador, el comportamiento que ves es exactamente el que producirá tu código de Node.js o front-end — incluida la semántica de flags como dotall (s) y sticky (y). Sin sorpresas entre las pruebas y producción.
Cuando un patrón no es válido, la herramienta muestra el mensaje de error nativo del navegador tal cual — el mismo que lanzaría tu código — sin texto inventado ni engañoso. Aprendes a leer errores de regex reales, no la paráfrasis de una herramienta.
Una expresión regular es un lenguaje compacto de patrones para describir conjuntos de cadenas. En lugar de escribir código procedural que recorra el texto carácter a carácter, declaras un patrón y dejas que el motor encuentre cada subcadena que encaja. Las expresiones regulares impulsan la búsqueda y reemplazo, la validación de entradas, el análisis de logs, el resaltado de sintaxis y la tokenización. En JavaScript son objetos de primera clase creados con un literal como /\d+/g o con el constructor RegExp.
Este probador usa el propio motor del navegador, así que lo que ves es exactamente lo que hará tu código de aplicación con el mismo patrón, flags y entrada.
/abc/i coincide con "ABC".^ y $ coincidan al inicio y fin de cada línea, no solo de toda la cadena.. coincida con saltos de línea, algo que no hace por defecto.\p{L}.Los paréntesis crean grupos de captura, numerados de izquierda a derecha por su paréntesis de apertura. El patrón (\w+)@(\w+) captura la parte local y el dominio de una dirección simple en los grupos 1 y 2. Los grupos con nombre, escritos (?<year>\d{4}), permiten referenciar capturas por nombre en lugar de por posición, lo que mantiene legibles los patrones complejos. Los grupos sin captura (?:…) agrupan sin consumir un número, lo que importa cuando solo necesitas agrupar para una alternancia o cuantificador.
En los reemplazos referencias capturas con $1, $2 o $<nombre>. El token $& inserta toda la coincidencia y $$ inserta un dólar literal. El panel de Sustitución de esta herramienta previsualiza exactamente cómo se expanden esos tokens.
Por defecto, los cuantificadores como *, + y {2,} son codiciosos: coinciden con todo lo posible y retroceden si hace falta. Añadir ? los hace perezosos, coincidiendo con lo mínimo posible. La trampa clásica es <.*> contra <a><b>, que coincide con toda la cadena de una vez. La versión perezosa <.*?> coincide con cada etiqueta por separado. Ver cómo se actualiza el resaltado al añadir el ? hace la diferencia evidente.
\., \+, \(. Un punto sin escapar coincide con cualquier carácter.(a+)+ en ciertas entradas pueden tardar un tiempo exponencial. Prefiere patrones específicos cuando sea posible./g arrastra lastIndex entre llamadas, lo que puede provocar coincidencias saltadas si reutilizas el mismo objeto en bucles.Las expresiones regulares destacan en la coincidencia léxica de patrones: extraer tokens, validar formas y buscar y reemplazar. Son una mala opción para analizar estructuras anidadas recursivamente como paréntesis equilibrados, HTML completo o JSON, donde un analizador real es la herramienta adecuada. Conocer el límite ahorra horas: usa regex en patrones planos y cambia a un analizador cuando la gramática se anida.
Algunos patrones solo son peligrosos con ciertas entradas. El ejemplo clásico ^(a+)+$ coincide al instante con una cadena corta, pero contra una larga serie de "a" seguida de un carácter que rompe la coincidencia, el retroceso del motor explota de forma combinatoria mientras prueba todas las formas de agrupar las "a" repetidas antes de rendirse. Esto es el retroceso catastrófico, y es una clase real y explotable de fallo (ReDoS) cuando una aplicación ejecuta un patrón vulnerable contra una entrada influida por un atacante. Como este probador ejecuta tu patrón en un Web Worker en segundo plano en vez de en el hilo principal de la página, es un lugar seguro para reproducirlo: pega un patrón con cuantificadores anidados, dale una larga serie de caracteres que coincidan seguida de uno que no coincida, y si la coincidencia no termina en aproximadamente un segundo y medio, el worker se termina y la herramienta informa de que el patrón es demasiado complejo con esa entrada — en vez de congelar tu pestaña del navegador como congelaría un proceso de servidor vulnerable con el mismo patrón. Como segunda red de seguridad, incluso un patrón que termina se limita a 100.000 coincidencias totales por ejecución, así que una coincidencia global patológica de ancho cero no puede repetirse para siempre. Para profundizar en por qué los cuantificadores anidados causan esto y cómo reescribirlos de forma segura, consulta nuestra guía complementaria sobre backtracking catastrófico y regex vulnerables a ReDoS.
Ser honesto sobre el motor importa. Esta herramienta evalúa los patrones con el RegExp nativo integrado en tu navegador — el mismo motor ECMAScript que ejecutan tu servidor Node.js y tu código de front-end —, así que los grupos con nombre, el lookahead, el lookbehind y los flags u y s se comportan exactamente igual que en JavaScript de producción. Lo que no admite es cualquier cosa fuera de la gramática de regex de ECMAScript: no hay cuantificadores posesivos, ni grupos atómicos, ni patrones recursivos, todos ellos presentes en PCRE (usado por PHP y muchas herramientas de línea de comandos) pero sin equivalente en JavaScript. Las clases de caracteres POSIX tampoco forman parte de la sintaxis de regex de JavaScript. Si copias aquí un patrón de una herramienta basada en PCRE o del módulo re de Python y se comporta de forma distinta, esa diferencia suele deberse a estas diferencias de variante y no a un fallo en ninguno de los dos motores.
No. Tanto tu patrón como tu texto de prueba se evalúan por completo en tu navegador con el motor nativo RegExp de JavaScript. Nada se transmite a un servidor, se almacena ni se registra. Puedes confirmarlo abriendo las herramientas de red de tu navegador y viendo que no se hacen peticiones mientras escribes.
Usa el motor de regex de JavaScript (ECMAScript) integrado en tu navegador, el mismo que usan tu código de Node.js y front-end. Eso significa que funciones como grupos con nombre, lookbehind y los flags s y u se comportan exactamente como lo harán en tu aplicación. Los patrones escritos para PCRE o Python pueden diferir ligeramente.
Cada coincidencia en la tabla de resultados incluye una columna por cada grupo de captura que defina tu patrón. Los grupos numerados aparecen en orden y los grupos con nombre creados con (?<nombre>…) también se incluyen. Si un grupo opcional no coincidió, la celda muestra un marcador de conjunto vacío para que lo detectes.
Sí. Abre el panel de Sustitución e introduce una cadena de reemplazo. Admite los tokens estándar: $1, $2 para grupos numerados, $<nombre> para grupos con nombre, $& para toda la coincidencia y $$ para un dólar literal. El resultado sustituido se actualiza en vivo mientras editas el patrón o el reemplazo.
La herramienta muestra el mensaje de error nativo del navegador tal cual — por ejemplo 'Invalid regular expression: missing )'. No se añade texto extra ni inventado, así que aprendes a leer los mismos errores que lanza tu código. La tabla de coincidencias y los resaltados simplemente se vacían hasta que el patrón vuelve a ser válido.
Si no usas el flag global (g), solo se encuentra y resalta la primera coincidencia. Activa el flag g para encontrar todas. Además, las coincidencias solapadas no son posibles en una sola pasada — el motor continúa después de cada coincidencia, así que los patrones que podrían solaparse solo mostrarán resultados no solapados.
Sí, porque se apoya en el moderno motor de JavaScript de tu navegador. Los grupos con nombre (?<nombre>…), el lookahead (?=…) y el lookbehind (?<=…) funcionan en los navegadores actuales. Si usas un navegador muy antiguo, algunas funciones pueden no estar disponibles, pero prácticamente todos los navegadores actualizados las admiten.
Sí, completamente gratuito sin registro, sin límites de uso y sin anuncios inyectados en los resultados. El resaltado en tiempo real, la tabla completa de coincidencias, la vista previa de sustitución y los seis flags están disponibles sin coste. Guárdalo en marcadores para depurar regex cuando lo necesites.
Sí. Los seis interruptores de flags son independientes, así que puedes activar cualquier combinación — global con ignorar mayúsculas, multilínea con dotall, etc. — exactamente como harías en un literal de regex de JavaScript real. La combinación activa se muestra junto a tu patrón mientras activas cada uno.
Sin el flag m, el acento circunflejo y el símbolo de dólar anclan solo al inicio y fin de toda la cadena de prueba. Con m activado, también coinciden al inicio y fin de cada línea dentro de la cadena, así que el dólar coincide justo antes de cada salto de línea, no solo en el carácter final. Esto sorprende cuando un patrón que funcionaba con una sola línea de repente coincide en sitios inesperados con texto multilínea.
Esto casi siempre significa que el patrón tiene cuantificadores anidados o solapados — como un grupo con un más o un asterisco repetido por otro más o asterisco — que disparan retroceso catastrófico con ciertas entradas. Como la coincidencia se ejecuta en un worker en segundo plano con un límite de tiempo, la herramienta lo detecta e informa de que el patrón es demasiado complejo en vez de congelar la página; intenta simplificar la repetición anidada o hacer más específico el cuantificador interno.
Por qué los cuantificadores anidados causan backtracking catastrófico, cómo ReDoS congela servidores y técnicas concretas para detectar y corregir regex.
Leer más →
Domina lookahead y lookbehind en regex con ejemplos claros y probables — reglas de contraseña, separadores de miles, enmascarado y los errores que confunden.
Leer más →
Aprende regex en JavaScript desde cero: clases de caracteres, cuantificadores, grupos, flags, lookaround y los errores que causan bugs. Con ejemplos probables.
Leer más →