Aller au contenu

Backreferences de regex dans le motif : \n et \k<name>

Les backreferences, une fonctionnalité clé des expressions régulières, permettent aux développeurs de faire référence à des groupes précédemment capturés directement dans le motif. Dans ce guide, nous approfondirons les backreferences.

Comment utiliser les backreferences

En JavaScript, nous utilisons un antislash suivi d'un nombre pour faire référence à une partie du motif que nous avons déjà correspondue. Par exemple, \1 fait référence au premier groupe capturé, \2 au deuxième, et ainsi de suite. Nous pouvons également attribuer des noms à des parties de notre motif et utiliser ces noms plus tard.

Voyons un exemple :


Output appears here after Run.

Dans cet exemple, \1 fait référence au premier groupe capturé. L'expression entière correspond donc si un mot est répété, c'est pourquoi le motif correspond à « hello hello ».

Utilisation des groupes nommés

Au lieu d'utiliser des nombres, nous pouvons attribuer des noms à des parties de notre motif. Cela facilite la compréhension. Pour plus d'informations, consultez la page précédente, Groupes de capture, où nous avons également abordé les groupes nommés. Voici un exemple simple :


Output appears here after Run.

Dans cet exemple, (?<word>\w+) est un groupe nommé. Nous utilisons \k<word> pour faire référence à ce groupe nommé par la suite.

Remarque : Les groupes nommés et les backreferences \k<name> sont pris en charge dans tous les navigateurs modernes et les environnements Node.js sans nécessiter de drapeaux.

Utilisations avancées

Les backreferences peuvent faire plus que simplement répéter des éléments. Examinons un exemple avancé :

Correspondance de chiffres consécutifs

Nous pouvons utiliser des backreferences pour faire correspondre un chiffre uniquement si le chiffre qui le suit immédiatement est différent. Par exemple :


Output appears here after Run.

Ici, \1 est le chiffre que nous avons précédemment fait correspondre. Le motif ne correspond à un chiffre que si le chiffre suivant est différent de celui capturé. Cette technique est utile pour valider des séquences où les caractères adjacents doivent différer, comme certaines règles de mot de passe ou formats de données.

Remarque : Bien que puissantes, les backreferences peuvent impacter les performances sur de grandes chaînes. Certains moteurs d'expressions régulières ont également des limitations lors de l'utilisation de backreferences à l'intérieur de lookahead/lookbehind, alors testez soigneusement vos motifs dans votre environnement cible.

Conclusion

Comprendre les backreferences dans les expressions régulières JavaScript nous aide à effectuer des tâches de correspondance de texte avancées. En sachant comment les utiliser, nous pouvons résoudre plus facilement des problèmes complexes. Essayez d'utiliser ces techniques dans vos propres projets JavaScript !

Pratique

Laquelle des affirmations suivantes sur les backreferences dans les expressions régulières JavaScript est vraie ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.