Qu’est-ce qu’un lookbehind ?
Un lookbehind permet à une regex de vérifier ce qui se trouve immédiatement avant une correspondance sans inclure ces caractères dans le résultat.
Contrairement à un groupe classique, un lookbehind est une assertion de largeur nulle qui ne consomme aucun caractère.
Lookbehind positif et négatif
Un lookbehind positif valide uniquement si un motif spécifique est présent avant la position actuelle.
Un lookbehind négatif valide uniquement si ce motif est absent.
Pourquoi utiliser les lookbehind en JavaScript ?
Les lookbehind permettent souvent d’écrire des regex plus courtes, plus lisibles et plus faciles à maintenir.
Ils sont particulièrement utiles lorsqu’une valeur doit être précédée d’un préfixe, d’un symbole monétaire ou d’un mot-clé précis.
Cas d’utilisation fréquents
Les développeurs utilisent souvent les lookbehind pour extraire des prix, des identifiants, des unités de mesure, des extensions de fichiers ou des valeurs précédées d’un libellé connu.
Ils permettent de simplifier certaines extractions qui nécessiteraient autrement des traitements supplémentaires.
Compatibilité des navigateurs
Les moteurs JavaScript modernes prennent en charge les lookbehind, mais ce n’est pas le cas de certains anciens navigateurs ou environnements legacy.
Lorsque la compatibilité est critique, il est recommandé de vérifier le support ou d’utiliser une alternative.
Lookbehind ou groupes capturants ?
De nombreux problèmes peuvent être résolus avec des groupes capturants ou avec des lookbehind.
Les lookbehind permettent souvent d’obtenir un résultat plus propre puisque le préfixe ne fait pas partie de la correspondance retournée.
Quand éviter les lookbehind
Si la compatibilité maximale est une priorité, les groupes capturants restent souvent la solution la plus sûre.
Les lookbehind doivent être utilisés lorsqu’ils améliorent réellement la lisibilité et la maintenance de la regex.
Lookbehind positif
Un lookbehind positif réussit seulement si le texte précédent correspond à l’expression indiquée.
Par exemple, (?<=€)\d+ matche des chiffres précédés du symbole euro.
(?<=€)\d+
Lookbehind négatif
Un lookbehind négatif réussit seulement si le texte précédent ne correspond pas à l’expression.
Par exemple, (?<!-)\d+ peut aider à éviter les nombres précédés d’un signe moins.
(?<!-)\d+
Compatibilité
Les moteurs JavaScript modernes supportent les lookbehinds, mais les anciens navigateurs peuvent poser problème.
Si la compatibilité est critique, il faut parfois réécrire le pattern sans lookbehind.