Tester de Expresiones Regulares
Prueba tus expresiones regulares en tiempo real con resaltado de coincidencias, grupos de captura, flags configurables y patrones comunes listos para usar.
Otras herramientas para desarrolladores
¿Qué es una expresión regular?
Una expresión regular (también conocida como regex o regexp) es un patrón de texto que describe un conjunto de cadenas posibles. Las expresiones regulares permiten buscar, validar y extraer información de textos de forma precisa y eficiente. Son una herramienta fundamental en programación, administración de sistemas y procesamiento de datos.
Por ejemplo, el patrón \d{3}-\d{2}-\d{4} coincide con números con formato de seguridad social americano (como 123-45-6789), mientras que [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} es un patrón básico para validar direcciones de correo electrónico. La potencia de las regex radica en su capacidad para describir patrones complejos con una sintaxis compacta.
¿Para qué se usan las expresiones regulares?
Las expresiones regulares tienen múltiples aplicaciones en el desarrollo de software y más allá:
- Validación de datos: verificar que un email, teléfono, código postal, NIF o URL tienen el formato correcto antes de procesarlos.
- Buscar y reemplazar: encontrar patrones en textos y sustituirlos por otros valores. Los editores de código (VS Code, Sublime Text) y herramientas de línea de comandos (
grep,sed) soportan regex. - Parsing de logs: extraer información estructurada de ficheros de log, como timestamps, niveles de error o IPs.
- Web scraping: extraer datos específicos de páginas HTML o respuestas de APIs.
- Transformación de datos: limpiar y normalizar datos en procesos ETL, eliminando caracteres no deseados o reformateando campos.
Flags más comunes
Los flags (también llamados modificadores) alteran el comportamiento de la expresión regular. Esta herramienta soporta los cinco flags de JavaScript:
g(global): busca todas las coincidencias en el texto, no solo la primera. Sin este flag, la regex se detiene tras el primer match.i(case-insensitive): ignora la diferencia entre mayúsculas y minúsculas. Con este flag,/abc/icoincide con "ABC", "abc", "Abc", etc.m(multiline): cambia el comportamiento de^y$para que coincidan con el inicio y fin de cada línea, no solo del texto completo.s(dotAll): hace que el punto (.) coincida también con saltos de línea (\n), que normalmente excluye.u(unicode): activa el modo Unicode, necesario para trabajar correctamente con caracteres fuera del plano básico (emojis, caracteres CJK, etc.).
¿Qué son los grupos de captura?
Los grupos de captura se crean encerrando parte de la expresión regular entre paréntesis (). Permiten extraer partes específicas de una coincidencia. Por ejemplo, aplicando la regex (\d{2})/(\d{2})/(\d{4}) al texto "Fecha: 25/12/2024", obtienes tres grupos: "25" (día), "12" (mes) y "2024" (año).
JavaScript también soporta grupos con nombre usando la sintaxis (?<nombre>...). Esto hace el código más legible: (?<dia>\d{2})/(?<mes>\d{2})/(?<anio>\d{4}) permite acceder a los valores como match.groups.dia en vez de match[1].
Si necesitas agrupar sin capturar (por ejemplo, para aplicar un cuantificador a un grupo), usa (?:...). Esto agrupa la expresión pero no la incluye en los resultados de captura.
Patrones comunes
Estas son algunas de las expresiones regulares más utilizadas en desarrollo web:
- Email:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} - URL:
https?://[^\s/$.?#].[^\s]* - Teléfono español:
(\+34)?[\s-]?[6-9]\d{8} - Fecha (dd/mm/aaaa):
\d{2}/\d{2}/\d{4} - Dirección IP:
\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b - Código hexadecimal de color:
#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\b - NIF español:
\d{8}[A-Z]
Estos patrones están disponibles en el selector "Patrones comunes" de la herramienta para que puedas probarlos directamente con tu texto.
Preguntas Frecuentes
¿Qué es una expresión regular?
Una expresión regular (regex) es un patrón de texto para buscar coincidencias dentro de cadenas. Permite describir patrones complejos como emails, URLs o números de teléfono con una sintaxis compacta y potente.
¿Qué significa el flag 'g'?
El flag global (g) busca todas las coincidencias en el texto, no solo la primera. Sin este flag, la regex se detiene tras encontrar la primera coincidencia.
¿Qué son los grupos de captura?
Los paréntesis () crean grupos que extraen partes específicas del match. Por ejemplo, en la regex (\d{2})/(\d{2})/(\d{4}) aplicada a '25/12/2024', el grupo 1 captura '25', el grupo 2 '12' y el grupo 3 '2024'.
¿Por qué mi regex tarda mucho?
Patrones con cuantificadores anidados (como (a+)+) pueden causar backtracking exponencial. Esto ocurre cuando el motor de regex explora demasiadas combinaciones. Simplifica el patrón o usa cuantificadores posesivos si tu motor los soporta.
¿Esta herramienta usa la misma sintaxis que JavaScript?
Sí, usa el motor de regex de JavaScript (ECMAScript). Esto significa que soporta lookahead (?=), lookbehind (?<=), grupos con nombre (?<name>), y los flags g, i, m, s y u.