Probador de regex online: prueba expresiones regulares de JavaScript en vivo
Prueba una expresión regular con un texto de ejemplo, con resaltado de coincidencias en vivo, grupos de captura y vista previa de reemplazo. Gratis, en tu navegador.
Contact us at hello@freetoolsforweb.com or sales@example.org. Site: https://freetoolsforweb.com/tools — call (416) 555-0199. Launched 2026-09-08, colours #244b3f and #fff, server 10.0.0.12.
| # | Coincidencia | Índice | Grupos |
|---|---|---|---|
| 1 | hello@freetoolsforweb.com | 14 | — |
| 2 | sales@example.org | 43 | — |
El enlace para compartir abre este probador con el mismo patrón, flags, texto de prueba y reemplazo. Se guardan después del # del enlace, que los navegadores nunca envían a un servidor.
Funciona por completo en tu navegador. Nada de lo que introduces se nos envía ni se guarda. Ver todas las herramientas gratis.
¿Encontraste un problema o algo que podría mejorar? Leemos todos los mensajes y lo arreglamos rápido.
Este probador de regex gratuito ejecuta expresiones regulares de JavaScript sobre tu texto de ejemplo en el navegador y resalta cada coincidencia mientras escribes. Para cada coincidencia se muestran los grupos de captura, los grupos con nombre y el índice, y un modo de reemplazo previsualiza las sustituciones con $1 y $<name> exactamente como las hará String.replace. Copia un enlace para compartir y quien lo abra verá el mismo patrón, los mismos flags y el mismo texto de prueba; todos los ejemplos de nuestra guía rápida de regex se abren aquí de la misma forma.
El motor es el de tu propio navegador, así que los resultados coinciden exactamente con Node.js, React, Deno y cualquier framework web; se parecen mucho a PCRE (PHP, re de Python, grep -P), pero no son idénticos. Las diferencias que más importan, el soporte de lookbehind, los cuantificadores posesivos y los anclajes \A, se explican más abajo para que un patrón que funciona aquí no te sorprenda en otro sitio.
Cómo usarla
- Escribe un patrón sin las barras que lo rodean, o haz clic en un patrón predefinido (email, URL, teléfono, fecha, IPv4, color hexadecimal) para partir de algo que se sabe que funciona.
- Marca los flags que necesites. g encuentra todas las coincidencias en lugar de solo la primera; i ignora mayúsculas y minúsculas; m hace que ^ y $ coincidan con el inicio y el final de cada línea.
- Pega tu texto de prueba. Las coincidencias se resaltan al instante y la tabla las enumera con sus grupos de captura.
- Abre Reemplazar para previsualizar una sustitución. Usa $1 para los grupos numerados, $<name> para los grupos con nombre y $& para la coincidencia completa.
- Copia el patrón como /pattern/flags para literales de JavaScript, o como new RegExp() cuando el patrón viene de una cadena.
- Haz clic en Copiar enlace para compartir para enviar toda la configuración a un compañero. El estado va detrás del # en el enlace, así que no se envía a ningún servidor cuando lo abre.
Preguntas frecuentes
¿Qué variante de regex usa?
ECMAScript (JavaScript), porque el navegador evalúa el patrón directamente. Es lo que usan Node.js, el código front-end y los patrones de JSON Schema. Python, Java, Go, PHP y grep tienen sus propios motores, que coinciden en lo básico y difieren en los detalles; prueba en el lenguaje de destino antes de publicar algo poco habitual.
¿Por qué mi patrón solo encuentra la primera coincidencia?
El flag g (global) está desactivado. Sin él, JavaScript se detiene en la primera coincidencia, lo cual es correcto para una validación y erróneo para una extracción. Activa g para ver todas las coincidencias.
¿Cómo busco coincidencias en varias líneas?
Dos flags distintos hacen dos cosas distintas. m (multilínea) hace que ^ y $ coincidan con el inicio y el final de cada línea. s (dotAll) hace que . coincida también con los saltos de línea. Para “cualquier cosa, saltos de línea incluidos” sin s, la expresión habitual es [\s\S]*.
¿Qué es un grupo de captura con nombre?
(?<year>\d{4}) captura cuatro dígitos con el nombre year, así que puedes leer match.groups.year en lugar de contar paréntesis, y referirte a él como $<year> en un reemplazo. Los grupos con nombre hacen legibles los patrones largos y resisten las modificaciones que añaden o quitan otros grupos.
¿Puede una regex ser lenta o peligrosa?
Sí. Los patrones con cuantificadores anidados como (a+)+ o con alternativas solapadas pueden tardar un tiempo exponencial con algunas entradas (backtracking catastrófico, un vector real de denegación de servicio). Si un patrón congela esta página, es lo mismo que congelaría tu servidor. Prefiere clases de caracteres concretas antes que .* y evita anidar cuantificadores.
¿Debo validar direcciones de correo con una regex?
Solo de forma aproximada. El patrón predefinido de esta herramienta coincide con la forma habitual y rechaza las erratas evidentes, que es todo lo que debería hacer un formulario. Un patrón totalmente conforme con el RFC 5322 tiene miles de caracteres y aun así no puede decirte si el buzón existe. Comprueba la forma y después envía un correo de confirmación.
Una guía breve de regex
• . cualquier carácter salvo el salto de línea · \d dígito · \w carácter de palabra · \s espacio en blanco · \b límite de palabra
• * cero o más · + uno o más · ? opcional · {n,m} entre n y m veces · añade ? detrás de cualquiera de ellos para hacerlo perezoso
• [abc] cualquiera de · [^abc] ninguno de · [a-z] rango · (x|y) alternativa · (?:x) grupo sin captura
• ^ inicio · $ final · (?=x) lookahead · (?!x) lookahead negativo · (?<=x) lookbehind (JavaScript y PCRE, no todos los motores)
• Escapa los caracteres especiales con una barra invertida: \. \? \( \[ \\
JavaScript frente a PCRE: las diferencias con las que te vas a encontrar
JavaScript no tiene cuantificadores posesivos (a++), grupos atómicos ni los anclajes \A o \Z (usa ^ y $ sin el flag m), y solo admite la forma con ámbito de los modificadores en línea, (?i:...), que llegó en ES2025; el (?i) sin ámbito al principio de un patrón es un error de sintaxis. Sí admite lookbehind, grupos con nombre y escapes de propiedades Unicode como \p{L} cuando el flag u está activado. El re de Python, además, no tiene \p{...} sin el paquete regex, y RE2 de Go no tiene ningún tipo de lookaround. Si un patrón tiene que funcionar en varios lenguajes, quédate en el subconjunto común: clases de caracteres, grupos simples, anclajes y cuantificadores codiciosos o perezosos.
Herramientas gratis relacionadas
- Guía rápida de regex — Todos los tokens de expresiones regulares con un ejemplo que funciona, su compatibilidad en JavaScript, PCRE/PHP, Python, Go, Java y .NET, y un enlace Pruébalo que abre el probador de regex ya relleno.
- Formateador JSON — Formatea, minifica y valida JSON, con los errores de análisis localizados por línea y columna. En tu navegador, sin subir nada.
- Codificador / decodificador Base64 — Codifica texto o archivos en Base64, convierte imágenes en data URI con fragmentos CSS e <img>, y decodifica Base64 a un archivo con vista previa. Nada sale de tu navegador.
- Contador de palabras — Cuenta palabras, caracteres, oraciones y tiempo de lectura, y comprueba los límites de X, LinkedIn, Instagram, YouTube, SEO y SMS mientras escribes.