Lookahead y Lookbehind
Comprender los temas avanzados de las expresiones regulares en JavaScript es beneficioso para cualquier desarrollador que busque mejorar sus habilidades de programación. Entre las características más avanzadas y potentes de este tema se encuentran las aserciones de lookahead y lookbehind. Estas aserciones permiten a los desarrolladores buscar patrones en el texto sin incluir dichos patrones en el resultado. Esta guía tiene como objetivo proporcionar una exploración en profundidad de las aserciones de lookahead y lookbehind en JavaScript, acompañada de numerosos ejemplos prácticos.
advertencia
Las expresiones regulares pueden ser complicadas y pueden existir casos extremos. Especialmente cuando se utilizan conceptos avanzados como Lookahead y Lookbehind. Utiliza probadores de regex en línea o escribe pruebas unitarias para validar tus expresiones contra una variedad de escenarios de entrada y asegurarte de que se comporten como se espera.
Introducción a las aserciones de lookahead y lookbehind
Las aserciones de lookahead y lookbehind son aserciones de ancho cero, lo que significa que coinciden con una posición dentro de la cadena en lugar de caracteres reales. Nos permiten afirmar si un patrón determinado existe o no existe en un punto específico de la cadena. Nota: Los motores modernos de JavaScript (ES2018+) admiten aserciones de lookbehind de longitud variable, aunque algunos entornos más antiguos pueden requerir patrones de longitud fija.
Lookahead positivo
Una aserción de lookahead positivo verifica la existencia de un cierto patrón adelante de la posición actual en la cadena. Se denota por (?=...). El siguiente ejemplo es un lookahead positivo para encontrar la palabra "apple" seguida de la palabra "pie":
Las aserciones lookaround en regex de JavaScript corresponden a caracteres
Lookahead negativo
Una aserción de lookahead negativo verifica la ausencia de un cierto patrón adelante de la posición actual. Se denota por (?!...). El siguiente ejemplo es un lookahead negativo para encontrar la palabra "apple" que no esté seguida de la palabra "pie":
El lookahead negativo en regex de JavaScript
Lookbehind positivo
Una aserción de lookbehind positivo verifica la existencia de un cierto patrón detrás de la posición actual en la cadena. Se denota por (?<=...). A continuación se muestra un ejemplo de código para encontrar la palabra "pie" que esté precedida por la palabra "apple":
El lookbehind positivo en regex de JavaScript
Lookbehind negativo
Una aserción de lookbehind negativo verifica la ausencia de un cierto patrón detrás de la posición actual. Se denota por (?<!...). A continuación se muestra un ejemplo para encontrar la palabra "pie" que no esté precedida por la palabra "apple":
Lookahead y Lookbehind
Aplicaciones prácticas de lookahead y lookbehind
Validación de la fortaleza de las contraseñas
Garantizar contraseñas seguras es un requisito común en las aplicaciones web. Las aserciones de lookahead se pueden utilizar para validar varias condiciones de contraseña sin consumir caracteres.
En este ejemplo, validamos una contraseña que debe contener al menos una letra mayúscula, una letra minúscula, un dígito y un carácter especial.
Formateo y análisis de datos
Las aserciones de lookahead y lookbehind pueden ayudar en el formateo y análisis de estructuras de datos complejas. Un buen ejemplo es insertar comas en una cadena de números para mejorar la legibilidad:
Conclusión
Dominar las aserciones de lookahead y lookbehind en JavaScript puede mejorar significativamente tu capacidad para manipular y analizar cadenas. Estas potentes herramientas ofrecen la flexibilidad de afirmar patrones sin consumir caracteres, lo que las hace invaluables para tareas complejas de procesamiento de texto. Al aprovechar estas aserciones, los desarrolladores pueden crear expresiones regulares más eficientes y efectivas, lo que conduce a un código más limpio y fácil de mantener.
Practice
¿Cuáles de las siguientes afirmaciones sobre las aserciones de lookahead y lookbehind en JavaScript son correctas?