Probador Regex
Prueba patrones regex con coincidencia en vivo, flags y detalles.
¿Qué son las expresiones regulares?
Las expresiones regulares (regex) son patrones poderosos para buscar, validar y manipular texto. Pueden encontrar todos los correos en un documento, validar formatos de número de teléfono, extraer fechas o reemplazar patrones complejos. Aunque la sintaxis puede parecer críptica al principio, dominar las regex es una habilidad fundamental para programadores, analistas de datos y cualquiera que trabaje con texto.
Esta herramienta proporciona pruebas en vivo de regex con resaltado, conteo de coincidencias y explicación detallada del patrón. Pega texto, escribe tu patrón y ve las coincidencias resaltadas al instante. La herramienta soporta el sabor regex de JavaScript con todos los modificadores (g global, i ignorar mayúsculas, m multilínea, etc.).
Cómo usar esta herramienta
Introduce tu patrón regex en el campo superior y el texto de prueba abajo. Las coincidencias se resaltan al instante. Selecciona los modificadores (global, ignorar mayúsculas, multilínea, etc.) según necesites. La herramienta también muestra grupos de captura, posiciones de coincidencia y explica el patrón en lenguaje natural.
Patrones regex comunes
- Correos electrónicos: ^[^\s@]+@[^\s@]+\.[^\s@]+$ — coincide con formatos de correo estándar.
- URLs: https?://\S+ — coincide con URLs que empiezan por http o https.
- Direcciones IPv4: coincide con el formato decimal con puntos estándar como 192.168.1.1 usando cuantificadores de dígitos.
- Fechas: coincide con fechas en formato YYYY-MM-DD usando patrones de año de cuatro dígitos y mes y día de dos dígitos.
- Palabras capitalizadas: [A-Z][a-z]+ — coincide con palabras que empiezan por mayúscula.
Flags de regex explicados
- g: g (Global): encuentra todas las coincidencias en el texto, no solo la primera.
- i: i (Sin distinción de mayúsculas): hace que el patrón coincida sin importar la capitalización.
- m: m (Multilínea): hace que ^ y $ coincidan con el inicio y fin de cada línea, no solo de toda la cadena.
- s: s (Dotall): hace que el metacarácter . coincida también con saltos de línea.
Grupos y captura
Los paréntesis () crean grupos de captura que extraen partes específicas de una coincidencia. Cada grupo se numera empezando por 1. Por ejemplo, el patrón (\w+)@(\w+) capturaría el nombre de usuario y el dominio de un correo. Los grupos sin captura usan (?:...). Los grupos con nombre usan (?<nombre>...) en JavaScript moderno y se referencian con groups.nombre.
Errores comunes con regex
Olvidar escapar caracteres especiales es el error más común. Caracteres como . + * ? ( ) [ ] ^ $ | y llaves tienen significado especial en regex y deben escaparse con barra invertida cuando quieras coincidir con ellos literalmente. Por ejemplo, para hacer coincidir un punto literal en una dirección IP, usa \. en lugar de . (que coincide con cualquier carácter).
Escribir patrones excesivamente codiciosos es otro problema frecuente. El cuantificador .* coincide con tanto texto como sea posible, lo que puede capturar mucho más de lo previsto. Usa el cuantificador perezoso .*? para coincidir lo menos posible. Por ejemplo, en HTML <p>Hola</p><p>Mundo</p>, <p>.*</p> coincide con todo, pero <p>.*?</p> coincide con cada par <p>...</p> por separado.
Preguntas frecuentes
¿Hay diferencias entre los sabores de regex?
Las expresiones regulares varían entre lenguajes. JavaScript usa el sabor PCRE-like, similar al de Java, Python (re), Ruby, PHP y muchas herramientas de línea de comandos modernas. POSIX BRE/ERE (usado por sed, awk, grep básico) es más limitado. Algunas funciones (lookbehind, grupos sin captura) varían en soporte. Esta herramienta usa el motor regex de JavaScript, que cumple con ECMAScript 2018+.
¿Cómo manejan las regex los emojis y caracteres Unicode?
Los emojis modernos pueden ocupar varios code points UTF-16. JavaScript regex con la flag /u (Unicode) los maneja correctamente. Sin /u, un solo emoji puede coincidir como dos caracteres separados. Para casos especiales como emojis con tonos de piel o secuencias ZWJ (Zero-Width Joiner), incluso /u puede no manejarlos como una unidad: necesitas regex Unicode más sofisticadas o bibliotecas dedicadas.