Probador de Regex

Probador de Regex

Probador y depurador de regex online gratis. Resalta coincidencias en vivo, inspecciona grupos de captura, ejecuta sustituciones y prueba flags. 100% privado.

Herramientas de Desarrollo
Flags:

Patrones comunes

Coincidencias 0

#CoincidenciaÍndiceLongitud
Sin coincidencias
Sustitución
Resultado
 

Palabras clave

probador de regexexpresiones regularesdepurador regexregex javascriptgrupos de captura regex

¿Necesitas algo más?

Cómo usar

1

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.

2

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.

3

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.

4

Abre el panel de Sustitución e introduce una cadena de reemplazo (admite $1, $<nombre> y $&) para previsualizar al instante el resultado reescrito.

Características

Resaltado de Coincidencias en Tiempo Real

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.

Tabla Completa de Grupos de Captura

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.

Vista Previa de Sustitución en Vivo

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.

Todos los Flags de JavaScript

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.

100% Privado, Sin Llamadas al Servidor

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.

¿Por qué elegir esta herramienta?

Tus Patrones y Datos Permanecen Locales

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.

Detalle a Nivel de Depuración

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.

Coincide con el Motor que Usas

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.

Informe de Errores Honesto

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.

Expresiones Regulares en JavaScript: Flags, Grupos y Errores Comunes

Qué Es Realmente una Expresión Regular

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.

Los Seis Flags y Qué Cambian

  • g (global): encuentra todas las coincidencias en lugar de detenerse en la primera. Sin él, solo se devuelve la primera coincidencia.
  • i (ignorar mayúsculas): trata mayúsculas y minúsculas como equivalentes, así /abc/i coincide con "ABC".
  • m (multilínea): hace que ^ y $ coincidan al inicio y fin de cada línea, no solo de toda la cadena.
  • s (dotall): permite que . coincida con saltos de línea, algo que no hace por defecto.
  • u (unicode): habilita el manejo correcto de puntos de código fuera del plano básico y escapes de propiedad Unicode como \p{L}.
  • y (sticky): ancla la coincidencia al lastIndex del motor, útil para tokenizadores que deben coincidir de forma contigua.

Grupos de Captura y Referencias

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.

Cuantificadores Codiciosos vs Perezosos

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.

Errores Comunes

  • Olvidar escapar caracteres especiales: un punto, más o paréntesis literal debe escribirse \., \+, \(. Un punto sin escapar coincide con cualquier carácter.
  • Retroceso catastrófico: cuantificadores anidados como (a+)+ en ciertas entradas pueden tardar un tiempo exponencial. Prefiere patrones específicos cuando sea posible.
  • Asumir que . coincide con saltos de línea: no lo hace salvo que actives el flag s. El texto multilínea suele necesitar m y s según la intención.
  • Reutilizar un regex global: un RegExp con /g arrastra lastIndex entre llamadas, lo que puede provocar coincidencias saltadas si reutilizas el mismo objeto en bucles.
  • Validar solo con regex: algunos formatos, como correos o HTML, son notoriamente difíciles de validar por completo con una sola expresión. Usa regex para una comprobación de forma inicial y luego verifica semánticamente.

Dónde Encaja Regex y Dónde No

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.

Depurar un Patrón con Retroceso Catastrófico

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.

Variante de JavaScript: Qué se Admite y Qué No

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.

Preguntas Frecuentes

¿Este probador de regex envía mis datos a algún sitio?

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.

¿Qué variante de regex usa?

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.

¿Cómo veo mis grupos de captura?

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.

¿Puedo probar sustituciones y reemplazos?

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.

¿Qué pasa cuando mi patrón no es válido?

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.

¿Por qué algunas de mis coincidencias no se resaltan?

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.

¿Admite grupos de captura con nombre y lookbehind?

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.

¿El probador de regex es gratuito?

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.

¿Puedo combinar varios flags a la vez, como global e ignorar mayúsculas juntos?

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.

¿Cómo cambia el flag multilínea lo que coincide el símbolo de fin de cadena?

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.

¿Por qué mi patrón parece colgarse o tarda demasiado con un texto de prueba largo?

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.

Artículos Relacionados

Saber más