DocumentosImágenesMediaHerramientas PDF

Explicador de Regex

Convierte patrones regex a lenguaje humano, en tu navegador.

//
1Start of string
2One of: A, -, Z, a, -, z, 0, -, 9, ., _, %, +, -, one or more times
3Literal "@"
4One of: A, -, Z, a, -, z, 0, -, 9, ., -, one or more times
5Escaped character: \.
6One of: A, -, Z, a, -, z, at least 2 times
7End of string
Procesado en tu navegador

Explicador de expresiones regulares en español

Todos los sabores

Compatible con patrones de JavaScript, Python, PCRE, Java, Go y Ruby.

100% privado

El análisis del patrón ocurre en tu navegador. Tus datos nunca salen de tu dispositivo.

Explicación clara

Cada token del patrón explicado en lenguaje natural, con ejemplos de coincidencia.

Instantáneo

Explicación en tiempo real mientras escribes. Sin registro, sin esperas.

Tres pasos, sin complicaciones

1

Pega tu expresión regular

Escribe o pega el patrón regex que quieres entender, con o sin delimitadores.

2

Explicación instantánea

La herramienta analiza el patrón y describe en español qué hace cada parte: grupos, cuantificadores, clases de caracteres y más.

3

Prueba con texto real

Introduce texto de ejemplo para ver qué partes coinciden con el patrón en tiempo real.

¿Tienes dudas?

Una expresión regular es un lenguaje de patrones para buscar y manipular texto. Te permite describir con precisión un patrón: por ejemplo, 'un número de teléfono', 'una dirección de email' o 'una URL'. El motor de regex recorre el texto buscando cadenas que coincidan con ese patrón. Son soportadas por prácticamente todos los lenguajes de programación modernos.

Email: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$. URL: https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}. Teléfono (internacional): \+?[1-9]\d{1,14}. Solo dígitos: ^\d+$. Código postal español: ^\d{5}$.

Las regex son concisas hasta el extremo: cada carácter tiene un significado especial potencial. El punto (.) coincide con cualquier carácter. El asterisco (*) significa 'cero o más veces'. Los corchetes ([]) definen clases de caracteres. Esta densidad de información hace que una expresión de 20 caracteres pueda representar reglas muy complejas, pero también hace que sea difícil de entender a primera vista sin práctica.

PCRE (Perl Compatible Regular Expressions) es el estándar de facto para PHP, Apache, nginx. JavaScript tiene su propio motor con diferencias: no soporta lookbehind variable-length en versiones antiguas, tiene el flag /u para Unicode. Python usa el módulo re con sintaxis similar a PCRE pero con algunas diferencias (por ejemplo, \A y \Z para inicio/fin de string). Go usa RE2, que no soporta backreferences por razones de rendimiento. Java usa java.util.regex con sintaxis POSIX extendida.

Los caracteres con significado especial en regex son: . * + ? ^ $ { } [ ] | ( ) \. Para usarlos literalmente, debes escaparlos con barra invertida: \. para un punto literal, \* para un asterisco literal. En JavaScript dentro de un string, necesitas doble escape: '\\.' porque el string ya consume una barra. Muchos lenguajes ofrecen funciones como RegExp.escape() (propuesta JS), re.escape() en Python, o preg_quote() en PHP.

Historia de las expresiones regulares (Ken Thompson 1968), teoría del lenguaje formal, regex en la programación moderna

Las expresiones regulares tienen su origen en la teoría de los lenguajes formales desarrollada por el matemático Stephen Kleene en los años 50, quien definió los 'conjuntos regulares' y la notación algebraica para describirlos. Ken Thompson fue el primero en implementar regex en software cuando en 1968 las integró en el editor de texto ed de Unix (y más tarde en grep, cuyo nombre viene de 'global regular expression print'). Su implementación usaba compilación a código máquina para búsqueda eficiente, una técnica que sentó las bases de los motores de regex modernos.

La popularización masiva de las regex llegó con Perl en los años 80 y 90. Larry Wall integró regex de forma nativa en la sintaxis del lenguaje, y las PCRE (Perl Compatible Regular Expressions) se convirtieron en el estándar de facto. POSIX formalizó dos niveles: BRE (Basic Regular Expressions) y ERE (Extended Regular Expressions) en el estándar de 1992. Hoy, prácticamente todos los lenguajes de programación incluyen soporte para regex: Python (módulo re), JavaScript (RegExp), Java (java.util.regex), Go (regexp/RE2), Ruby, PHP (preg_*), .NET y muchos más.

Las regex son una herramienta de doble filo: extremadamente poderosas pero también fuente de vulnerabilidades. El ReDoS (Regular Expression Denial of Service) es un tipo de ataque donde un patrón regex mal escrito puede causar un tiempo de ejecución exponencial con ciertos inputs maliciosos. El motor RE2 de Google (usado en Go) fue diseñado específicamente para garantizar tiempo de ejecución lineal, eliminando la posibilidad de ReDoS a costa de no soportar backreferences. OWASP incluye ReDoS en su lista de riesgos de seguridad en aplicaciones web.