Ingresa una expresión regular y texto de prueba para ver coincidencias resaltadas en tiempo real.
//
Patrones Rápidos
Texto de Prueba
Coincidencias
Reemplazar
Vista Previa de Reemplazo
Explicación del Patrón
Publicidad
Acerca de Esta Herramienta
Las expresiones regulares tienen su origen en 1956, cuando el matemático Stephen Kleene introdujo el concepto de "eventos regulares" como notación para describir patrones en la teoría de lenguajes formales.
Más de una década después, en 1968, Ken Thompson llevó las regex de la teoría a la práctica implementando la coincidencia de patrones en el editor de texto ed, que luego evoluciónó a grep, una herramienta cuyo nombre significa literalmente "impresión global de expresiones regulares." Este avance convirtió a las regex en una herramienta indispensable del ecosistema Unix y sentó las bases para su adopción en prácticamente todos los lenguajes de programación.
En el desarrollo de software moderno, las expresiones regulares se utilizan para todo, desde validación de entrada y extracción de datos hasta operaciones de buscar y reemplazar y análisis de registros. Lenguajes como JavaScript, Python, Java y Perl implementan motores regex con variaciones sutiles, pero los conceptos fundamentales son universales: clases de caracteres, cuantificadores, anclas, agrupación y alternancia forman un poderoso minilenguaje para describir patrones de texto.
A pesar de su poder, las expresiones regulares tienen fama de ser complejas. Los patrones densos pueden volverse difíciles de leer y mantener, lo que dio origen a la famosa broma de que cuando resuelve un problema con regex, ahora tiene dos problemas. La sintaxis premia la precisión pero castiga la ambigüedad, y errores sutiles pueden producir coincidencias inesperadas o un rendimiento catastrófico.
Esta herramienta de prueba cierra la brecha entre escribir y comprender regex. Al proporcionar resaltado de coincidencias en tiempo real, visualización de grupos de captura y explicación de patrones, permite experimentar con expresiones de forma interactiva. Todo el procesamiento ocurre completamente en su navegador—sus patrones y datos nunca se transmiten a ningún servidor.
La Historia y Ciencia de las Expresiones Regulares
Las expresiones regulares se originaron en la teoría matemática de los lenguajes formales desarrollada por Stephen Kleene en 1956. Su concepto de "eventos regulares" describia patrones que podian ser reconocidos por automatas finitos—máquinas abstractas con un número fijo de estados que procesan la entrada símbolo por símbolo. Esta base teórica estableció que cualquier patron describible por una expresión regular corresponde a un tipo específico de máquina computacional, creando una conexión profunda entre la coincidencia de patrones y la teoría de la informática.
Ken Thompson llevó las expresiones regulares de las matemáticas a la computación en 1968 cuando implemento la coincidencia de patrones en los editores de texto QED y ed en Bell Labs. Su innovación fue compilar patrones regex en código máquina que simulaba un automata finito no determinista (NFA), haciendo la coincidencia lo suficientemente rápida para uso interactivo. Este trabajo llevó directamente a la utilidad grep, que se convirtio en una de las herramientas más influyentes de Unix e introdujo las regex a toda una generación de programadores.
La evolución de las implementaciones divergió en dos enfoques principales: el diseño NFA original de Thompson (usado por la mayoria de lenguajes modernos incluyendo JavaScript, Python y Java) y un enfoque de automata finito determinista (DFA) usado por herramientas como awk. Los motores NFA soportan características como retroreferencias y lookaheads que son matemáticamente imposibles para motores DFA, pero pueden sufrir retroceso de tiempo exponencial en patrones patológicos.
Perl revoluciónó las expresiones regulares a finales de los 80 anadiendo características más alla del formalismo original de Kleene: lookaheads, lookbehinds, cuantificadores no codiciosos, grupos de captura nombrados y soporte Unicode. Estas extensiones hicieron que las regex de Perl fueran tan expresivas que se convirtieron en un estándar de facto, generando la biblioteca PCRE usada por PHP, Apache y muchas otras herramientas. JavaScript adopto su propia variante regex en la especificación ECMAScript, anadiendo características incrementalmente—más recientemente las banderas 'd' para indices y 'v' para clases Unicode mejoradas.
Cómo Usar
Ingrese su patrón regex y seleccione banderas (g para global, i para ignorar mayúsculas, m para multilínea, etc.).
Pega texto de prueba para ver coincidencias resaltadas en tiempo real. Usa Patrones Rápidos para regex comunes como email o URL.
Revisa detalles de coincidencias con grupos de captura e índices. Activa modo Reemplazar para probar sustituciones con
Metodología, $2.
Metodología
Esta herramienta utiliza el motor RegExp nativo de JavaScript, que implementa la especificación de expresiones regulares ECMAScript. Los patrones se compilan en tiempo de ejecución usando el constructor RegExp, aceptando la cadena del patron y cualquier combinación de banderas (g, i, m, s, u, y). Si el patron contiene errores de sintaxis, el constructor lanza una excepción que la herramienta captura y muestra como mensaje de validación.
Para patrones globales (bandera g habilitada), la herramienta usa un bucle iterativo RegExp.exec() para encontrar cada coincidencia en la cadena de prueba, recopilando texto completo de coincidencia, valores de grupos de captura, grupos nombrados e indices de caracteres para cada ocurrencia. Sin la bandera global, solo se devuelve la primera coincidencia con su información completa de grupos.
El enfoque exec() proporciona datos más ricos que String.match(), incluyendo la propiedad index que señala la posición exacta de cada coincidencia.
El resaltado de coincidencias se logra mediante procesamiento del documento en lugar de reemplazo innerHTML. La herramienta divide la cadena de prueba en los límites de coincidencia y envuelve los segmentos coincidentes en elementos span estilizados, preservando el texto original exactamente. Este enfoque previene problemas de inyección HTML y asegura que caracteres especiales se muestren correctamente.
La vista previa de reemplazo aplica String.replace() con el patron de sustitución del usuario para generar una vista previa en vivo.
Comprendiendo tus Resultados
El resaltado verde indica segmentos de texto coincidentes en su cadena de prueba. Cada region resaltada corresponde a una coincidencia completa de su patrón. Al usar grupos de captura (paréntesis), el panel de detalles muestra la coincidencia completa como Grupo 0 y cada grupo numerado secuencialmente desde el Grupo 1. Los grupos nombrados definidos con sintaxis (?...) aparecen con sus etiquetas para fácil identificación.
Las banderas que selecciona cambian fundamentalmente el comportamiento de coincidencia. La bandera 'g' (global) encuentra cada ocurrencia en lugar de detenerse en la primera. La bandera 'i' habilita coincidencia insensible a mayúsculas. La bandera 'm' (multilínea) hace que ^ y $ coincidan en límites de línea en lugar de solo al inicio y fin de toda la cadena, lo cual es esencial al probar patrones con entrada multilínea.
La bandera 's' (dotAll) permite que el metacaracter punto coincida con caracteres de nueva línea.
Las clases abreviadas comunes facilitan la construcción de patrones: \d coincide con cualquier dígito (equivalente a [0-9]), \w coincide con caracteres de palabra (letras, dígitos, guion bajo), y \s coincide con espacios en blanco incluyendo espacios, tabulaciones y nuevas líneas.
Los cuantificadores controlan la repetición: * significa cero o más, + significa uno o más, ? significa cero o uno, y {n,m} especifica un rango exacto. Escape siempre los caracteres especiales de regex con barra invertida cuando quiera coincidirlos literalmente.
Pruebe los patrones exhaustivamente con casos límite antes de desplegar en código de producción.
Ejemplos Prácticos
Validación de email: ^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,}$ coincide con '[email protected]' pero rechaza 'user@' o '@domain.com'. Números de teléfono: \d{3}[-.\s]?\d{3}[-.\s]?\d{4} coincide flexiblemente con '555-123-4567', '555.123.4567' y '5551234567'. URLs: https?://[\w.-]+\.[a-zA-Z]{2,}[/\w.-]* coincide con enlaces http y https.
Extracción de datos con grupos de captura: (\d{4})-(\d{2})-(\d{2}) aplicado a '2024-01-15' captura año, mes y día como grupos separados ($1='2024', $2='01', $3='15'). Los grupos nombrados lo hacen más claro: (?\d{4})-(?\d{2})-(?\d{2}).
Buscar y reemplazar: transforma 'Apellido, Nombre' a 'Nombre Apellido' usando patron (\w+),\s*(\w+) con reemplazo $2 $1. Extracción de etiquetas HTML: <(\w+)[^>]*> coincide con etiquetas de apertura capturando el nombre en Grupo 1.
Consejos y Mejores Practicas
Comience simple y aumente la complejidad gradualmente. Escriba un patrón básico que coincida con su texto objetivo, luego agregue restricciones una a la vez. Probar cada adición asegura que entienda lo que hace cada parte de su expresión.
Use grupos sin captura (?:...) cuando necesite agrupación para alternancia o cuantificadores pero no necesite extraer el contenido. Esto mantiene limpia la numeración de grupos de captura y puede mejorar el rendimiento.
Sea específico con las clases de caracteres en lugar de depender del metacaracter punto (.). Un patrón como [a-zA-Z0-9] es más preciso que \w porque \w también coincide con guiones bajos, lo cual puede no ser deseado. La especificidad reduce falsos positivos.
Considere siempre los casos límite: cadenas vacías, cadenas solo con espacios, entrada muy larga y caracteres Unicode. Habilite la bandera 'u' al trabajar con texto que pueda contener emojis o caracteres fuera del Plano Multilingüe Básico.
Evite el retroceso catastrófico no anidando cuantificadores dentro de otros cuantificadores (como patrones (a+)+). Estos pueden causar que el motor regex tome tiempo exponencial con ciertas entradas.
g (global) encuentra todas las coincidencias, no solo la primera. i (insensible a mayúsculas) ignora diferencias de mayúsculas/minúsculas. m (multilínea) hace que ^ y $ coincidan con inicios/finales de línea. s (dotAll) hace que . coincida con saltos de línea. u (unicode) habilita soporte Unicode completo.
¿Cómo funcionan los grupos de captura?
Los paréntesis ( ) crean grupos de captura que extraen partes de las coincidencias. El grupo 0 siempre es la coincidencia completa, los grupos 1+ son tus capturas en orden. ¿Los grupos nombrados usan sintaxis (?<nombre>...) y aparecen con sus nombres. ¿Los grupos sin captura (?:...) agrupan sin capturar.
¿Cuáles son los patrones regex comunes disponibles?
La biblioteca de patrones rápidos incluye patrones listos para usar para: direcciones de correo, URLs, números de teléfono, fechas, direcciones IP, números de tarjeta de crédito, códigos postales, nombres de usuario, contraseñas, colores hex y etiquetas HTML. Haz clic en cualquier patrón para cargarlo.
¿Cómo funciona la función de reemplazo?
Activa el modo Reemplazar para probar patrones de sustitución. Usa $1, $2, etc. para referenciar grupos de captura, $& para la coincidencia completa, $` para texto antes de la coincidencia y $' para texto después. Los grupos nombrados se referencian con $<nombre>. La vista previa muestra exactamente el resultado.
¿Funcionarán mis patrones regex en otros lenguajes de programación?
Esta herramienta usa el motor RegExp de JavaScript, que comparte la sintaxis básica con la mayoría de los lenguajes (clases de caracteres, cuantificadores, alternancia, anclas). Sin embargo, algunas características difieren entre lenguajes. Características específicas de JavaScript como las aserciones lookbehind o los escapes de propiedades Unicode \p{} pueden no funcionar idénticamente en Python, Java o PHP. Para compatibilidad entre lenguajes, usa construcciones ampliamente soportadas.
¿Se mantienen privados mis datos de prueba?
Sí. Toda la coincidencia y reemplazo de regex ocurre íntegramente en su navegador usando el motor RegExp integrado de JavaScript. Ningún patrón ni cadena de prueba se envía jamás a un servidor. Esto hace la herramienta segura para probar patrones con datos sensibles como direcciones de correo, archivos de registro o contenido propietario sin riesgo de privacidad.
Mis Favoritos
Arrastra para reordenar
Aún no hay favoritos
Toca la ☆ en cualquier herramienta para marcarla como favorita.