Inicio › Tecnología › Expresión Regular
Una expresión regular (regex) es una notación formal qué describe un patrón de texto mediante una combinación de caracteres literales y metacaracteres con significado especial, usada para buscar, validar o sustituir cadenas qué cumplen esa estructura. Elementos como el cuantificador +, qué indica una o más repeticiones, el símbolo qué representa un dígito, o los grupos entre paréntesis para capturar subcadenas, forman el vocabulario básico compartido por la mayoría de motores de expresiones regulares, aunque existen variaciones entre implementaciones, como PCRE, usada en PHP y muchos otros lenguajes, o las expresiones regulares nativas de POSIX. Prácticamente todos los lenguajes de programación modernos incluyen soporte para expresiones regulares en su biblioteca estándar, y son la base de herramientas de línea de comandos como grep o sed.
Es una forma de describir un patrón de texto usando símbolos especiales, para buscar o comprobar si un texto encaja con ese patrón. Por ejemplo, un patrón puede describir un número de teléfono español, y la expresión regular sirve para comprobar si un texto concreto cumple exactamente esa forma.
Para validar qué un campo de formulario contiene un correo electrónico con formato razonable, se puede usar una expresión regular qué exija un usuario, una arroba, un dominio y una extensión de al menos dos letras; conviene combinarla siempre con una validación adicional en el servidor, no solo en el navegador, porque cualquier validación de cliente puede saltarse manipulando la petición directamente. En procesamiento de logs, una expresión regular con grupos de captura permite extraer de una línea de texto la IP, la fecha y el código de estado HTTP en una sola pasada, sin escribir un analizador manual carácter a carácter.
Porque el estándar real de direcciones de correo (RFC 5322) permite formatos mucho más complejos de los qué la mayoría de expresiones regulares sencillas contemplan, así qué una regex simple puede rechazar direcciones válidas poco comunes o aceptar formatos qué en la práctica no son entregables; muchos equipos prefieren una validación básica combinada con el envío de un correo de confirmación.
Es un problema de rendimiento qué ocurre cuando un patrón mal construido, con cuantificadores anidados ambiguos, obliga al motor a probar un número exponencial de combinaciones para determinar si el texto coincide, lo qué puede bloquear un servidor durante segundos o minutos con una entrada relativamente corta pero diseñada para explotar ese fallo.
En general no: el HTML permite anidamiento y variaciones estructurales qué las expresiones regulares no manejan bien de forma fiable, por lo qué se recomienda usar un analizador específico de HTML, como los qué incluyen la mayoría de lenguajes, en lugar de intentar extraer datos con patrones de texto genéricos.