Probador de Regex — Prueba y Depura Expresiones Regulares Online
Escribe un patrón, pega una cadena de prueba, ve las coincidencias resaltadas al instante. Grupos de captura, flags, mensajes de error — todo en vivo mientras escribes. Usa el motor regex de JavaScript (el mismo que tu navegador y Node.js). Nada sale de tu navegador.
tools.regexTester.flags
Character Classes
.Any character\dDigit (0-9)\wWord character\sWhitespace
Quantifiers
*0 or more+1 or more?0 or 1{n,m}n to m times
Anchors
^Start of line$End of line\bWord boundary\BNon-word boundary
Expresiones Regulares en 90 Segundos
Una regex es un mini-lenguaje para describir patrones de texto. El patrón \d{3}-\d{4} coincide con números de teléfono como "555-1234". El patrón ^From:.+$ coincide con líneas de encabezado de correo que empiezan por "From:". Concepto sencillo, pero la sintaxis se complica rápido.
JavaScript usa el sabor regex de ECMAScript (definido en ECMA-262). Diferencias clave con otros sabores: no hay lookbehind en motores antiguos (añadido en ES2018), no hay cuantificadores posesivos, no hay grupos atómicos. Si estás portando una regex desde Python o PCRE, ten cuidado con estas lagunas.
El error más común que veo: olvidar que . no coincide con nuevas líneas por defecto. Si tu cadena de prueba tiene saltos de línea y tu patrón usa .*, obtendrás coincidencias parciales inesperadas. Añade el flag s (dotAll) o usa [\s\S]* en su lugar.
Trampa de rendimiento: cuantificadores anidados como (a+)+ o (.*a){20} pueden provocar retroceso catastrófico — el motor intenta un número exponencial de caminos. Una entrada de 30 caracteres puede bloquear tu navegador durante minutos. Esta herramienta se ejecuta en tu navegador, así que un mal patrón solo congela esta pestaña, no un servidor de producción. Prueba aquí primero.
Cómo Usar
- Ingresa tu patrón regex — sin delimitadores (solo el patrón, no /pattern/).
- Configura flags: g (todas las coincidencias), i (insensible a mayúsculas), m (multilínea), s (punto coincide con nueva línea).
- Pega tu cadena de prueba. Las coincidencias se resaltan en tiempo real.
- Revisa los grupos de captura abajo — cada grupo () muestra su contenido capturado por separado.
Cuándo Lo Usarás
Validar formatos de entrada de usuario
Email, teléfono, código postal, tarjeta de crédito — todos tienen patrones. Construye y prueba la regex aquí antes de ponerla en tu código de validación.
Extraer datos de archivos de log
Logs del servidor, archivos CSV, respuestas de API — cuando necesitas extraer timestamps, IPs o códigos de error de texto no estructurado. Construye un patrón con grupos de captura, pruébalo contra una línea de log de muestra, luego úsalo en tu script.
Buscar y reemplazar en editores de código
VS Code, IntelliJ, Sublime — todos soportan buscar-y-reemplazar con regex. Construye tu patrón aquí con casos de prueba, luego pégalo en tu editor. Especialmente útil para refactoring.
Depurar una regex que "debería funcionar pero no funciona"
Escribiste un patrón que funciona para algunas entradas pero falla para otras. Pega la entrada que falla aquí, ve exactamente dónde se rompe la coincidencia. Usualmente es un escape faltante (\. vs .), un cuantificador greedy vs lazy (.* vs .*?), o un flag faltante.
Errores Comunes
Escapa tus caracteres especiales
En regex, . * + ? ^ $ { } [ ] ( ) | \ todos tienen significado especial. Para coincidir con un punto literal, usa \. — no solo un punto.
Greedy vs lazy: .* vs .*?
.* toma lo máximo posible (greedy), .*? toma lo mínimo posible (lazy). En caso de duda, usa lazy con .*? y añade especificidad.
Los anchors importan: ^ y $ con flag multilínea
Sin el flag m, ^ solo coincide con el inicio de toda la cadena y $ solo con el final. Con el flag m, coinciden con inicio/final de cada línea. Si procesas texto multilínea y tu patrón usa ^, probablemente necesitas el flag m.
Evita el retroceso catastrófico
Patrones como (a+)+ o (x+x+)+y pueden tomar tiempo exponencial en entradas que no coinciden. Nunca anides cuantificadores en clases de caracteres superpuestas.
Ejemplos
Extraer componentes de fecha
Captura año, mes, día del formato de fecha ISO usando grupos numerados.
Input
(\d{4})-(\d{2})-(\d{2})Output
Entrada "2024-03-15" → Grupo 1: "2024", Grupo 2: "03", Grupo 3: "15"Coincidir patrones de email
Un patrón de email simplificado (no cumple RFC 5322, pero detecta no-emails obvios).
Input
[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}Output
Coincide con "[email protected]", "[email protected]"Características
- Coincidencia en tiempo real — resultados se actualizan mientras escribes, sin botón de envío
- Todos los flags de JavaScript: g, i, m, s, u, v, y
- Visualización de grupos de captura numerados
- Resaltado de errores de sintaxis con mensajes descriptivos
- Conteo de coincidencias e indicadores de posición
- Funciona 100% en tu navegador — no se envían datos a ningún lado
Preguntas Frecuentes
¿Por qué mi regex funciona en Python pero no aquí?
Diferentes sabores de regex. Python usa sintaxis tipo PCRE con funciones que JavaScript no tiene: lookbehind (añadido en ES2018, no en navegadores antiguos), grupos atómicos, cuantificadores posesivos (a++), modo verbose (flag x). El problema más común: el re.DOTALL de Python es el flag s de JavaScript.
¿Cómo hago coincidir a través de múltiples líneas?
Dos opciones: (1) Añadir el flag s — hace que . coincida con caracteres de nueva línea. (2) Usar [\s\S] en lugar de . — coincide con cualquier carácter incluyendo nuevas líneas sin el flag s. Para coincidir línea por línea, usa el flag m para que ^ y $ coincidan con límites de línea.
¿Cuál es la diferencia entre (?: ) y ( )?
( ) es un grupo de captura — captura el texto coincidente para uso posterior (backreferences, extracción). (?: ) es un grupo no-capturador — agrupa el patrón pero no captura. Usa (?: ) cuando necesites agrupar pero no el valor capturado. Es ligeramente más rápido y mantiene la numeración de grupos limpia.
¿Por qué mi regex congela la página?
Retroceso catastrófico. Patrones con cuantificadores anidados en caracteres superpuestos (como (a*)*b o (.+)+$) pueden tomar tiempo exponencial en entradas que no coinciden. El motor intenta cada combinación posible antes de rendirse. Solución: hacer cuantificadores más específicos o reestructurar para evitar anidar cuantificadores en los mismos caracteres.
¿Cómo coincido con caracteres especiales literalmente?
Escápalos con barra invertida: \. para punto, \* para asterisco, \( para paréntesis, \\ para la barra invertida misma. Dentro de una clase de caracteres [ ], la mayoría de caracteres especiales pierden su significado excepto ] \ ^ -. En caso de duda, escápalo — un escape innecesario es inofensivo, uno faltante es un bug.
Consejos y flujos de trabajo relacionados
- ¿Pruebas tu regex contra datos JSON? Dales formato primero con nuestro Formateador JSON.
- ¿Necesitas generar un hash del texto coincidente para verificación? Usa nuestro Generador de Hash.
- Codifica de forma segura las URLs encontradas con regex con nuestro Codificador de URL.
- ¿Trabajas con cadenas codificadas en Base64 en tu regex? Decodifícalas con nuestro Codificador Base64.