Saltar al contenido

Referencias de retroceso en patrones de regex: \n y \k<name>

Las referencias de retroceso, una característica clave de las expresiones regulares, permiten a los desarrolladores hacer referencia a grupos capturados previamente dentro del propio patrón. En esta guía, profundizaremos en las referencias de retroceso.

Cómo usar referencias de retroceso

En JavaScript, usamos una barra invertida seguida de un número para hacer referencia a una parte del patrón que ya coincidió. Por ejemplo, \1 se refiere al primer grupo capturado, \2 al segundo, y así sucesivamente. También podemos dar nombres a partes de nuestro patrón y usar esos nombres más tarde.

Veamos un ejemplo:


Output appears here after Run.

En este ejemplo, \1 se refiere al primer grupo capturado. Por lo tanto, toda la expresión coincide si una palabra se repite, razón por la cual el patrón coincide con "hello hello".

Uso de grupos con nombre

En lugar de usar números, podemos dar nombres a partes de nuestro patrón. Esto facilita su comprensión. Para más información, consulta la página anterior, Grupos de captura, donde también discutimos los grupos con nombre. Aquí tienes un ejemplo sencillo:


Output appears here after Run.

En este ejemplo, (?<word>\w+) es un grupo con nombre. Usamos \k<word> para hacer referencia a este grupo con nombre más tarde.

Nota: Los grupos con nombre y las referencias de retroceso \k<name> son compatibles con todos los navegadores modernos y entornos de Node.js sin necesidad de banderas.

Usos avanzados

Las referencias de retroceso pueden hacer más que simplemente repetir cosas. Veamos un ejemplo avanzado:

Coincidencia de dígitos consecutivos

Podemos usar referencias de retroceso para coincidir con un dígito solo si el dígito inmediatamente siguiente es diferente. Por ejemplo:


Output appears here after Run.

Aquí, \1 es el dígito que coincidió anteriormente. El patrón coincide con un dígito solo si el siguiente dígito es diferente al capturado. Esta técnica es útil para validar secuencias donde los caracteres adyacentes deben diferir, como ciertas reglas de contraseñas o formatos de datos.

Nota: Aunque son potentes, las referencias de retroceso pueden afectar el rendimiento en cadenas grandes. Algunos motores de regex también tienen limitaciones al usar referencias de retroceso dentro de aserciones (lookarounds), por lo que prueba los patrones cuidadosamente en tu entorno objetivo.

Conclusión

Comprender las referencias de retroceso en las expresiones regulares de JavaScript nos ayuda a realizar tareas avanzadas de coincidencia de texto. Al saber cómo usarlas, podemos resolver problemas complejos con mayor facilidad. ¡Prueba a utilizar estas técnicas en tus propios proyectos de JavaScript!

Práctica

¿Cuál de las siguientes afirmaciones sobre las referencias de retroceso en las expresiones regulares de JavaScript es verdadera?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.