Skip to content

Probador de Regex Gratis — Depura Patrones en Línea

Prueba patrones de expresiones regulares al instante contra cualquier texto. Resaltado de coincidencias en vivo, grupos de captura, vista previa de reemplazo, división y explicador. Regex JavaScript, 100% privado, sin registro.

Sin rastreo Se ejecuta en el navegador Gratis
Todas las pruebas corren localmente en tu navegador. Tu patrón y texto nunca salen de este dispositivo.
Flags
Coincidencias resaltadas
Coincidencias y grupos de captura
Revisado para fidelidad con ECMA-262, corrección de grupos de captura (con y sin el flag /d), paridad de plantilla de reemplazo con String.prototype.replace, resistencia a ReDoS vía presupuesto de reloj de pared y accesibilidad (roles ARIA, anuncios de coincidencia para lectores de pantalla, manejo RTL/LTR). — Equipo de Herramientas de Texto de Go Tools · May 21, 2026

¿Qué Es un Probador de Regex?

Un probador de regex (probador de expresiones regulares) es una herramienta que te permite escribir un patrón regex, pegar un trozo de texto de prueba y ver exactamente con qué coincide el patrón, con grupos de captura, vista previa de reemplazo y desglose de flags, sin recompilar código ni ejecutar un script. Para desarrolladores, acorta el bucle de minutos a milisegundos: ajusta el patrón, mira cómo se mueven los resaltados, despliega el regex con confianza.

Una expresión regular es un lenguaje compacto para describir patrones de texto. `\d+` coincide con uno o más dígitos. `[A-Za-z_]\w*` coincide con un identificador típico. `(?\d{4})-(?\d{2})-(?\d{2})` coincide con una fecha ISO y nombra cada parte. Las expresiones regulares son la columna vertebral de buscar-y-reemplazar en cada editor de código, de la validación en cada formulario, del parseo de logs en cada stack de observabilidad y de `grep`, `sed` y `awk`: las herramientas Unix sobre las que corre la mitad de internet. También son notoriamente difíciles de escribir correctamente: un cuantificador con un off-by-one o un escape que falta puede coincidir con la subcadena equivocada, fallar una coincidencia por completo o, en el peor caso, disparar retroceso catastrófico que toma rehén a un núcleo de CPU. Un buen probador de regex caza cada uno de esos modos de fallo antes de que lleguen a producción.

Este probador ejecuta el motor RegExp nativo de ECMA-262 que viene en cada navegador moderno: el mismo motor al que llamas desde JavaScript, TypeScript, Node.js, Deno o Bun. Eso significa: grupos de captura (numerados y nombrados con `(?...)`), aserciones look-ahead y look-behind (`(?=...)`, `(?!...)`, `(?<=...)`, `(?

Lo que el probador expone más allá de las coincidencias en bruto: el panel de Coincidencias y grupos de captura lista cada coincidencia con sus offsets [inicio, fin) y el valor de cada grupo de captura, la misma información que obtendrías de `String.prototype.matchAll` con el flag /d, pero dispuesta para escaneo visual. La pestaña Reemplazar muestra una vista previa de sustitución en vivo que soporta el alfabeto completo de plantillas $1 / $& / $` / $' / $$ / $: exactamente lo que acepta String.replace de JavaScript. La pestaña Dividir aplica String.split con el regex y muestra cada parte. La pestaña Explicar tokeniza el patrón y anota cada pieza en español llano, útil para revisión de código, enseñanza y portado entre dialectos.

Sobre la privacidad: cada operación es local. Tu patrón y tu texto de prueba nunca salen de la página: no se registran, no se envían a un servicio de analítica, no se almacenan en disco. Solo tus preferencias de interfaz (pestaña activa + qué flags sueles tener encendidos) persisten en localStorage. Eso hace esta herramienta segura para muestras de log redactadas, patrones propietarios, configuración interna y patrones que incluyen pistas sobre el esquema de tus datos. Comparado con probadores con backend como regex101, la historia de privacidad y latencia es estrictamente mejor; el trade-off es soporte de un solo sabor (solo JavaScript).

Si eres nuevo con regex, el desplegable Patrones comunes incluye iniciadores probados en combate: dirección de email, URL, IPv4, UUID, color hex, fecha ISO, número de teléfono de EE.UU. y un patrón para recortar espacios al final. Carga uno, observa las coincidencias contra el texto de muestra suministrado y luego muta el patrón un carácter cada vez para sentir cómo responde el motor. Combina esto con la herramienta Text Diff cuando quieras comparar antes/después de una limpieza guiada por regex, con Formateador JSON cuando tu entrada o salida esperada es JSON, o con codificador de URL cuando las cadenas con las que coincides están codificadas para URL.

// The pattern you build in this tester drops straight into JavaScript.
// Example: extract every ISO date from a string with named groups.

const pattern = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/g;
const text = 'shipped 2026-05-21, scheduled 2026-06-30';

for (const m of text.matchAll(pattern)) {
  console.log(m.groups.year, m.groups.month, m.groups.day);
  // → 2026 05 21
  // → 2026 06 30
}

// Same regex, used in a replace with $<name> templates:
text.replace(pattern, '$<day>/$<month>/$<year>');
// → 'shipped 21/05/2026, scheduled 30/06/2026'

// With the /d flag, every match carries [start, end] indices
// per capture group — the Matches panel uses this to paint offsets.
const p2 = /(?<year>\d{4})-(?<month>\d{2})/gd;
const m = [...text.matchAll(p2)][0];
m.indices.groups.year; // [8, 12]

Características Clave

Resaltado de Coincidencias en Vivo

Cada coincidencia en tu texto de prueba se ilumina en el instante en que tu patrón parsea. Los colores alternos hacen fácil contar visualmente las coincidencias adyacentes y la insignia de conteo encima del resultado te dice el total exacto: sin botón Ejecutar, sin retraso de debounce mayor de 200 ms.

Panel Lateral de Grupos de Captura

El panel Coincidencias y grupos de captura a la derecha lista cada coincidencia como una tarjeta con sus offsets [inicio, fin), el texto completo de la coincidencia y cada grupo de captura posicional y nombrado dentro. Los grupos nombrados se etiquetan a sí mismos como $ para que leas los datos del mismo modo en que los consumirás en el código.

Vista Previa de Reemplazo en Vivo con $1 / $& / $

Cambia a la pestaña Reemplazar para ver tu sustitución aplicada en tiempo real. El alfabeto completo de reemplazo de ECMAScript funciona: $1..$N para posicional, $ para nombrado, $& para la coincidencia entera, $` y $' para prefijo/sufijo, $$ para un dólar literal. Paneles de entrada y salida lado a lado con copia de un clic.

División por Fronteras de Regex

La pestaña Dividir llama a String.prototype.split con tu regex y muestra cada parte como una lista numerada. Las partes vacías se renderizan con un glifo ⏎ para que veas cómo el motor manejó los delimitadores adyacentes: útil para depurar limpieza de entrada tipo CSV.

Explicador de Patrón (Token a Token)

La pestaña Explicar tokeniza tu patrón en chips coloreados por clase (escape / cuantificador / clase de caracteres / grupo / ancla / alternación) y anota cada chip con una descripción de una línea. Léete tu propio regex antes de desplegar; úsalo para revisión de código o enseñanza.

A Salvo de ReDoS (Timeout de Reloj de Pared)

Cada llamada a coincidencia se envuelve en un presupuesto de 250 milisegundos. Las formas clásicas de retroceso catastrófico como `(a+)+`, `(a|aa)+b` y los cuantificadores profundamente anidados abortan limpiamente con una advertencia Patrón agotado: la página sigue respondiendo en lugar de bloquear la pestaña. Detección sin un sandbox del lado del servidor.

Biblioteca de Patrones Comunes

Iniciadores probados en combate para los ocho patrones a los que los desarrolladores más recurren: email, URL, IPv4, UUID v4, color hex, fecha ISO, número de teléfono de EE.UU. y recorte de espacios al final. Cada uno carga con una muestra coincidente para que veas el regex funcionando antes de adaptarlo.

Compartir por Permalink (Sin Subida)

Copiar enlace codifica patrón + flags + texto de muestra en el hash de la URL (#p=…&f=gim&t=…). Los navegadores nunca transmiten los fragmentos de URL en las peticiones, así que un enlace compartido reproduce tu estado en la máquina del destinatario sin tocar los servidores de go-tools.org. Autocontenido y amigable para auditoría.

100% Privado, Solo en el Navegador

Tu regex y texto de prueba nunca salen de tu dispositivo. Sin peticiones de red, sin logging, sin analítica de lo que escribes. Verifícalo en DevTools → Red: cero peticiones cuando escribes. Seguro para patrones propietarios, logs redactados y cualquier texto que no pegarías en regex101.

Ejemplos Trabajados

Extraer cada dirección de email de un párrafo

[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g

Pega el patrón con el flag /g activado, suelta un párrafo en el texto de prueba y cada email se ilumina en la vista resaltada. El panel de Coincidencias y grupos de captura a la derecha lista cada dirección con sus offsets [inicio, fin): útil cuando canalizas el mismo regex hacia grep, sed o un editor de código.

Capturar partes de fecha con grupos nombrados

(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})
/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/g

Los grupos nombrados de ECMA-262 aparecen en el panel derecho como $, $, $. Cambia a la pestaña Reemplazar y prueba $/$/$ para reformatear fechas ISO a DMA en una sola pasada: el mismo truco funciona en cualquier llamada moderna a replace de JS.

Buscar y reemplazar con retrorreferencias $1

(\w+) (\w+)
Reemplazo: $2, $1   →   Jack Doe → Doe, Jack

Dos grupos de captura sin nombre, plantilla de reemplazo $2, $1, y la pestaña Reemplazar te da una vista previa en vivo. $&, $`, $', $$ y $ están todos soportados: exactamente el alfabeto de sustitución de la especificación ECMAScript, así que lo que copies se ejecuta sin cambios en cualquier motor JS.

Eliminar espacios en blanco al final línea por línea

[ \t]+$
/[ \t]+$/gm

Combina los flags /g (global) y /m (multilínea) para que $ ancle al final de cada línea, no solo al final de la entrada. La pestaña Reemplazar con un reemplazo vacío muestra una diff limpia: las tabulaciones y espacios finales desaparecen, la prosa se queda en su sitio. El mismo regex con el flag /s (dotAll) desactivado impide que . cruce saltos de línea.

Detectar retroceso catastrófico y sobrevivir a él

(a+)+b
Texto de prueba: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac

Los cuantificadores + anidados forman un patrón ReDoS clásico. En un probador ingenuo esto cuelga la pestaña. Aquí el guardia de reloj de pared se dispara tras 250 ms, aparece el banner Patrón agotado y la página sigue respondiendo. Ancla el patrón, cambia a una alternación no solapada o usa modismos pseudoatómicos, y vuelve a probar.

Dividir una línea tipo CSV por delimitadores mixtos

[,;|]\s*
alpha, beta; gamma | delta → ["alpha", "beta", "gamma", "delta"]

Cambia a la pestaña Dividir. Cualquier coma, punto y coma o barra vertical (seguida de espacio opcional) se convierte en una frontera de partes. Útil para limpiar listas de etiquetas copiadas y pegadas, normalizar entrada de usuario o preprocesar campos de log antes de un parser CSV real: consulta CSV a JSON cuando los datos realmente sean RFC 4180.

Cómo Usar el Probador de Regex

  1. 1

    Escribe tu patrón entre las barras

    Suelta cualquier expresión regular ECMA-262 en el campo /…/. Los patrones incorrectos se resaltan en rojo con un mensaje del parser; los patrones válidos pasan a coincidencia en vivo.

  2. 2

    Activa los flags que necesites

    g (global), i (insensible a mayúsculas), m (multilínea), s (dotAll), u (unicode), y (sticky), d (índices). Cada chip se enciende cuando está activo; la lectura a la derecha del patrón muestra el literal canónico.

  3. 3

    Pega tu texto de prueba

    Las coincidencias se resaltan en colores alternos mientras escribes. El panel Coincidencias y grupos de captura a la derecha lista cada coincidencia con offsets [inicio, fin) y el valor de cada grupo de captura (grupos nombrados etiquetados como $).

  4. 4

    Cambia de pestaña para Reemplazar, Dividir o Explicar

    Reemplazar previsualiza una plantilla de sustitución junto a la entrada. Dividir corta en cada frontera de coincidencia. Explicar descompone el patrón token a token con una descripción en español llano por elemento.

  5. 5

    Copia el literal o comparte un permalink

    Copiar /patrón/flags suelta el literal canónico de regex en tu portapapeles para uso directo en JavaScript / TypeScript / Node. Copiar enlace codifica el estado completo en un hash de URL (sin subida) para que un colega pueda reproducirlo localmente.

Errores Comunes de Regex

Olvidaste el flag /g y solo conseguiste una coincidencia

Sin /g (o /y), el motor se detiene tras la primera coincidencia. Los métodos match, matchAll, replace y split se comportan de forma distinta alrededor del flag global. Activa /g y vuelve a ejecutar; el conteo sobre los resultados salta de 1 a N.

✗ Incorrecto
Patrón: /\d+/  →  '1 22 333' produce solo ['1']
✓ Correcto
Patrón: /\d+/g  →  '1 22 333' produce ['1', '22', '333']

Quién Usa Esta Herramienta

Validar Entradas de Formulario Antes de Desplegar
Confirma que tu regex de email / teléfono / código postal / nombre de usuario coincide con lo que esperas, y rechaza lo que no esperas, en casos límite (nombres unicode, alias con plus, formatos internacionales) antes de que la validación llegue a producción y rebote a usuarios reales.
Extraer Datos de Logs y Configs
Construye un patrón que extraiga IDs de petición, códigos de estado, latencias o líneas de stack-trace de una rebanada arbitraria de log. Los grupos nombrados hacen los datos autodocumentados; el panel de Coincidencias muestra offsets para que después canalices el mismo regex hacia `rg --replace` o `grep -oE`.
Buscar y Reemplazar en una Base de Código
Esboza un patrón de refactor (p. ej. `(\w+)\.apply\(null,\s*\[(.*?)\]\)` → `$1($2)`) aquí, previsualiza la sustitución contra fragmentos representativos y luego pega el regex validado en el buscar/reemplazar a nivel de proyecto de tu editor con confianza.
Comprobar la Cordura de un Patrón Encontrado en Línea
¿Pegaste un regex de StackOverflow o un blog? Suéltalo en la pestaña Explicar: cada token se anota en español llano. Caza problemas sutiles (`.+?` donde querías `.+`, anclas `^`/`$` que faltan, cuantificadores accidentalmente codiciosos) antes de que el regex aterrice en tu código.
Enseñar Regex a un Compañero de Equipo
Abre la pestaña Explicar sobre un patrón que funciona y camina por él token a token. El código de color (escape / cuantificador / clase de caracteres / grupo / ancla / alternación) deja que quien aprende vea la forma estructural del regex, no solo los caracteres.
Portar un Patrón Entre Lenguajes
¿Tienes un regex de Python o PCRE que necesitas usar en JavaScript? Pégalo aquí. Si parsea, el explicador te muestra la semántica equivalente en JS; si no, el error del parser nombra la construcción ofensora (grupos atómicos, cuantificadores posesivos, `(?i)` inline) para que sepas exactamente qué reescribir.
Depurar un Regex Lento de Producción
Si se sospecha que un regex de servidor sufre retroceso catastrófico, pégalo en este probador con una muestra de la entrada. El guardia de reloj de pared de 250 ms se dispara en casos patológicos, dándote un diagnóstico inmediato antes de que recurras a herramientas de profiling, y el explicador señala la causa raíz del cuantificador anidado.

Notas del Motor y Algoritmo

Motor RegExp ECMA-262 (Navegador Nativo)
Usa `new RegExp(pattern, flags)` y el motor que viene con V8 / JavaScriptCore / SpiderMonkey: la misma semántica de regex que obtienes en JavaScript en cualquier sitio. Los patrones que se validan aquí corren sin cambios en Node.js, Deno, Bun y cualquier navegador moderno.
Iteración de Coincidencias vía String.matchAll
La iteración global usa `text.matchAll(regex)` en lugar de un bucle manual de lastIndex, así que cada coincidencia lleva sus grupos de captura, grupos nombrados y (con /d) índices [inicio, fin]. Las coincidencias de ancho cero se manejan con el avance estándar +1 de lastIndex para evitar bucles infinitos.
Timeout de Reloj de Pared para Protección ReDoS
Un presupuesto de 250 milisegundos envuelve cada llamada a coincidir, reemplazar y dividir. El motor aún puede retroceder internamente en un solo intento de coincidencia, pero la iteración exterior coopera con el presupuesto: los patrones patológicos abortan con `timedOut: true` y la interfaz expone una advertencia en lugar de bloquear la pestaña.
Reimplementación de la Plantilla de Reemplazo
La pestaña Reemplazar parsea $1..$N, $&, $`, $', $$ y $ manualmente en lugar de delegar en `String.replace`, así que la vista previa se comporta de forma idéntica entre motores (Safari antiguo, Node antiguo) donde las plantillas de grupo nombrado tienen casos límite. La salida es exactamente lo que producen los motores de JavaScript actuales.
Tokenizador de Patrón para el Explicador
La pestaña Explicar corre un tokenizador escrito a mano que clasifica cada fragmento de patrón (escape / metacarácter / cuantificador / clase de caracteres / apertura de grupo / cierre de grupo / ancla / alternación). Las construcciones no familiares caen a `literal` con una nota genérica para que el explicador nunca pierda contenido en silencio.
Permalinks vía Hash de URL (Nunca Transmitido)
El estado para compartir se codifica en el fragmento location.hash (`#p=…&f=…&t=…&tab=…`). Los navegadores nunca transmiten el fragmento en las peticiones HTTP, así que los servidores de go-tools.org reciben cero datos cuando se abre un permalink. La hidratación ocurre enteramente en el dispositivo del destinatario.

Buenas Prácticas de Regex

Ancla los Patrones Cuando Lo Pretendas
`^pattern$` coincide con una cadena exacta; `pattern` coincide en cualquier sitio. La elección equivocada es el bug más común en la validación de formularios: la falta de `^` deja pasar un `attacker.com/` inicial a una comprobación de dominio; la falta de `$` deja pasar basura final. Usa la pestaña Coincidir contra muestras rotas a propósito para confirmar qué se rechaza.
Prefiere Grupos Sin Captura para Estructura Pura
`(?:foo|bar)+` y `(foo|bar)+` son funcionalmente idénticos, pero el primero no asigna un grupo de captura. Recurre a `(?:…)` siempre que el grupo exista solo para un cuantificador o alternación: mantiene estables tus $1..$N numerados y ahorra una pequeña cantidad de trabajo del motor.
Usa el Flag /u para Cualquier Cosa Más Allá de ASCII
Sin /u, el punto y `\w` tratan los caracteres de par sustituto (emoji, puntos de código no BMP) como dos unidades UTF-16. Con /u, son un punto de código cada uno: lo que tus usuarios percibirán. /u también habilita `\p{Letter}` y otros escapes de propiedad. Por defecto, usa /u para patrones nuevos a menos que tengas una razón específica para no hacerlo.
Nombra Tus Grupos de Captura
`(?\d{4})-(?\d{2})` es autodocumentado. Seis meses después, cuando releas el regex, `m.groups.year` es obviamente el año; `m[1]` no lo es. Las plantillas de reemplazo con $ sobreviven al reordenamiento de grupos: las plantillas posicionales se rompen en cuanto alguien añade otro grupo.
Prueba los Casos de Fallo, No Solo los de Éxito
Un probador de regex es para los fallos. Confirma con qué coincide tu patrón, luego muta deliberadamente el texto de prueba para ver con qué no coincide: espacios iniciales, espacios finales, partes que faltan, partes extra, caso equivocado, escrituras mezcladas. Los patrones que pasan con entrada válida pero aceptan basura son los bugs que producción expone primero.

Preguntas Frecuentes

¿Mi regex o texto de prueba se envía a vuestro servidor?
No. Cada operación de coincidencia, reemplazo, división y explicación corre en JavaScript dentro de tu navegador usando el motor RegExp nativo. Tu patrón y tu texto no se suben, no se registran, no se almacenan en disco y no se envían a ningún tercero. Solo tus preferencias de interfaz (pestaña activa + qué flags sueles tener encendidos) se guardan en localStorage para que la página los recuerde en la próxima visita: nunca el patrón ni el texto de prueba. Puedes verificarlo abriendo DevTools → Red: escribir en cualquiera de las dos cajas dispara cero peticiones. Esto hace que la herramienta sea segura para patrones propietarios, muestras de log redactadas, configuración interna y cualquier otra cosa que no pegarías en regex101.
¿Qué sabor de regex usa este probador: PCRE, Python, Java, JavaScript?
ECMA-262 (JavaScript), el dialecto implementado por V8, JavaScriptCore y SpiderMonkey: el mismo motor que obtienes con `new RegExp(pattern, flags)` en cualquier navegador, Node.js, Deno o Bun. Esto significa que las funciones soportadas son: grupos de captura (numerados + nombrados con `(?...)`), look-aheads `(?=...)` y `(?!...)`, look-behinds `(?<=...)` y `(?...)`, los cuantificadores posesivos `a++`, los condicionales `(?(1)yes|no)` y los modificadores inline `(?i)` lanzarán un error de sintaxis. El `re.VERBOSE` de Python no está soportado aquí. Para regex de Python/Java/Go, lleva el patrón de vuelta a su motor nativo: la mayoría de patrones simples se transfieren sin cambios y el explicador aquí es neutral al sabor.
¿Qué hace cada uno de los flags g, i, m, s, u, y, d?
g (global): encuentra cada coincidencia, no solo la primera; requerido para iterar con .matchAll y para reemplazo global. i (insensible a mayúsculas): A y a coinciden con el mismo carácter. m (multilínea): ^ y $ anclan en cada salto de línea, no solo al inicio/fin de toda la entrada. s (dotAll): . también coincide con saltos de línea; sin /s, un punto se detiene en \n. u (unicode): habilita los escapes \u{HHHH}, los escapes de propiedad Unicode (\p{Letter}) y trata el patrón como una secuencia de puntos de código Unicode en lugar de unidades de código UTF-16. y (sticky): ancla cada coincidencia en lastIndex, útil para tokenizadores. d (hasIndices, ES2022): rellena `.indices` y `.indices.groups` con pares [inicio, fin] para cada captura; este probador usa /d por debajo para dibujar las fronteras de grupo. Actívalos como chips encima del texto de prueba; el literal canónico /patrón/flags se muestra en la lectura.
¿Cómo escribo grupos de captura y cómo me refiero a ellos?
Envuelve un subpatrón entre paréntesis: `(\d{4})-(\d{2})-(\d{2})` te da tres grupos posicionales, accesibles como $1, $2, $3 en los reemplazos o como m.groups[0..2] en el panel de Coincidencias. Usa `(?...)` para grupos nombrados: `(?\d{4})-(?\d{2})` te permite escribir $/$ en la plantilla de reemplazo. Usa `(?:...)` para un grupo sin captura cuando solo necesitas agrupar para un cuantificador (`(?:foo|bar)+`): no crea una retrorreferencia, lo que mantiene estables tus $1..$N numerados. Dentro del mismo patrón, refiérete a una captura anterior con `\1`, `\2`, etc.: útil para encontrar palabras duplicadas como `\b(\w+)\s+\1\b`.
¿Cómo funcionan look-ahead y look-behind, y para qué sirven?
Los look-arounds son aserciones de ancho cero: comprueban que algo coincide (o no) sin consumir caracteres. `(?=foo)` (look-ahead positivo) tiene éxito si `foo` sigue a la posición actual; `(?!foo)` (look-ahead negativo) tiene éxito si `foo` NO sigue. `(?<=foo)` y `(?
¿Por qué mi regex cuelga el navegador y qué es el retroceso catastrófico?
El retroceso catastrófico ocurre cuando un patrón tiene cuantificadores anidados sobre alternativas solapadas: la forma clásica es `(a+)+`, `(a|aa)+`, `(\w*)*` o `(?:a|a?)+`. En una entrada donde la coincidencia puede fallar en el último carácter, el motor prueba un número exponencial de divisiones de grupo antes de rendirse. En `aaaaaaaaaaaaaaaaaaaaab` con el patrón `(a+)+b`, eso son 2^21 ≈ 2 millones de retrocesos antes de la respuesta. Este probador envuelve cada llamada a coincidencia en un presupuesto de reloj de pared de 250 ms: si se supera, la iteración se detiene y ves una advertencia Patrón agotado. Soluciones: ancla el patrón a sus fronteras (`^...$`), prefiere alternativas no solapadas (`(a|b)` en lugar de `(a|aa)`), desenrolla los cuantificadores anidados (`a+` en lugar de `(a+)+`) o reescribe usando modismos pseudoposesivos (`(?=(a+))\1` simula `a++` en JS).
¿En qué se diferencia este probador de regex de regex101.com?
Tres diferencias. (1) Privacidad: regex101 envía cada pulsación de tecla a sus servidores para evaluación backend y almacena patrones en enlaces compartidos de la comunidad; esta herramienta corre enteramente en tu navegador, sin llamadas de red. (2) Velocidad: una ida y vuelta al servidor por cada cambio añade 80-300 ms; aquí las coincidencias se actualizan en menos de 10 ms incluso sobre texto largo. (3) Foco de sabor: regex101 soporta PCRE, Python, Java, .NET, JavaScript, Rust y Go con interfaz de feature-flags; esta herramienta se centra en ECMA-262 (JavaScript), el sabor que cada navegador, Node, Deno y Bun envían, y el explicador junto con los permalinks están afinados a ese único sabor. Si necesitas funciones exclusivas de PCRE, regex101 sigue siendo la herramienta correcta; para trabajo en JavaScript / TypeScript, esta es más rápida y más privada. Los permalinks aquí son hashes de URL (sin subida), así que un enlace compartido reproduce tu patrón localmente en la máquina del destinatario.
¿Cómo escapo caracteres especiales como . | ( ) [ ] { } * + ? ^ $ \?
Pon una barra invertida delante: `\.`, `\|`, `\(`, `\)`, `\[`, `\]`, `\{`, `\}`, `\*`, `\+`, `\?`, `\^`, `\$`, `\\`. La barra `/` no necesita escape en un patrón pasado como cadena (solo en los literales de regex JS entre las barras). Dentro de una clase de caracteres `[...]` la mayoría de metacaracteres pierden su significado especial, así que `[.]`, `[*]`, `[+]` coinciden todos con un carácter literal: los únicos metacaracteres que siguen siendo especiales son `]`, `\`, `^` (solo al inicio, para negar) y `-` (rango cuando está entre dos caracteres). Cuando dudes, pega el texto literal en el patrón y ejecuta el explicador: cada secuencia de escape obtiene una descripción de una línea en el panel de desglose.
¿Puedo compartir un regex con un colega vía enlace?
Sí, y el enlace no implica ninguna ida y vuelta al servidor. Haz clic en Copiar enlace en la barra de acciones: el probador codifica tu patrón, flags, texto de prueba y pestaña activa en el hash de la URL (`#p=...&f=gim&t=...&tab=match`). Cualquiera que abra el enlace hidrata la página con el mismo estado, localmente en su máquina. Como los datos viven en el fragmento del hash, nunca se envían al servidor go-tools.org (los navegadores no transmiten fragmentos en las peticiones) y no se registran en nuestros logs de acceso. La longitud del enlace crece con el tamaño del texto, así que para muestras de más de 2 KB copia el regex con Copiar /patrón/flags y pega el texto por separado. Para revisión colaborativa de regex sin compartir el texto real, comparte solo el patrón y los flags: el destinatario pega su propio corpus y obtiene las mismas coincidencias.
¿El probador soporta Unicode, emoji y escrituras no latinas?
Sí. Activa el flag /u para optar al manejo completo de Unicode: \w coincide con los caracteres latinos de palabra (la semántica por defecto), pero con /u puedes coincidir con categorías más amplias mediante escapes de propiedad Unicode: `\p{Letter}` coincide con cada letra de cada escritura, `\p{Script=Han}` coincide con los ideogramas chinos, `\p{Emoji}` coincide con los emoji, `\p{Number}` coincide con cada dígito o cifra. Sin /u, los emoji de par sustituto como 👨‍💻 se ven como dos unidades de código UTF-16 y patrones como `^.$` fallarán al coincidir con ellos; con /u, el punto trata cada punto de código de grafema como un carácter. Para escrituras RTL (árabe, hebreo), los patrones funcionan sin manejo especial: la dirección es una cuestión de renderizado, no del motor de regex. El contenido CJK coincide igual que el latino.
¿Cuál es la diferencia entre .match, .matchAll, .replace y .split con un regex?
String.prototype.match devuelve la primera coincidencia (o un array de todas las coincidencias cuando /g está activado) pero pierde los grupos de captura cuando /g está activado. String.prototype.matchAll requiere /g y devuelve un iterador de arrays de coincidencia CON grupos de captura e índices: lo que este probador usa por dentro. String.prototype.replace acepta o bien una plantilla de cadena ($1, $&, etc.) o un callback llamado por coincidencia con (match, ...groups, offset, string, namedGroups). String.prototype.split divide en cada coincidencia: útil con /g, pero el flag global se ignora para la semántica de split. Esta herramienta expone match vía la pestaña Coincidir, replace vía Reemplazar y split vía Dividir, así que puedes previsualizar cada variante sin salir de la página; el literal /patrón/flags está a un clic cuando estés listo para pegar en el código.
¿Por qué mi regex de Python o Java no funciona aquí?
Porque este probador ejecuta ECMA-262 (JavaScript): la mayoría de los patrones se portan limpiamente, un puñado no. Trampas comunes de portado: (1) los flags inline `(?i)` y `(?x)` de Python no son válidos en JS: usa los chips de flag de arriba. (2) `\A` y `\Z` de Python son `^` y `$` en JS (con /m para anclas de línea). (3) Los condicionales `(?(name)yes|no)` de Java/Python no están soportados en JS: reescribe con una alternación. (4) Los cuantificadores posesivos `a++` y los grupos atómicos `(?>...)` no están disponibles en JS: simúlalos con `(?=(a+))\1`. (5) `(?P...)` de Python es `(?...)` en JS. (6) `\h` para espacio horizontal y `\v` para vertical no están en JS: usa `[ \t]` y `[\n\r]`. Para un portado seguro, el explicador desglosa qué hace cada token para que puedas cambiar la sintaxis no soportada por un equivalente.
¿Hay un tamaño máximo de texto o conteo máximo de coincidencias?
Límite práctico: unos 200.000 caracteres de texto de prueba y 500 coincidencias resaltadas mostradas a la vez. Más allá de 500 coincidencias, el panel de Coincidencias muestra un banner Mostrando las primeras 500; la insignia de conteo sigue reportando el total real. El presupuesto de reloj de pared de 250 ms limita patrones desbocados independientemente del tamaño. Para archivos de log de varios megabytes, ejecuta el regex con `grep -oE` o `rg` (ripgrep) en línea de comandos: hacen streaming y no chocan con un tope de renderizado de interfaz. Para escaneos puntuales de texto enorme, pega una rebanada representativa en este probador para validar el patrón, luego ejecuta el patrón validado contra el archivo completo en tu shell.

Herramientas relacionadas

Ver todas las herramientas →