Rétro-référence nommée : \k<name>
Baseline
Large disponibilité
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2020.
Une rétro-référence nommée (named backreference en anglais) fait référence à la sous-correspondance d'un groupe capturant nommé précédent et correspond au même texte que ce groupe. Pour les groupes capturant non nommés, vous devez utiliser la syntaxe normale de rétro-référence.
Syntaxe
\k<name>
Paramètres
name-
Le nom du groupe. Doit être un identifiant valide et faire référence à un groupe capturant nommé existant.
Description
Les rétro-références nommées sont très similaires aux rétro-références normales : elles font référence au texte correspondant à un groupe capturant et correspondent au même texte. La différence est que vous faites référence au groupe capturant par son nom plutôt que par son numéro. Cela rend l'expression rationnelle plus lisible et plus facile à re-factoriser et à maintenir.
En mode non sensible à l'Unicode, la séquence \k ne démarre une rétro-référence nommée que si l'expression rationnelle contient au moins un groupe capturant nommé. Sinon, il s'agit d'une échappement d'identité et c'est la même chose que le caractère littéral k. Il s'agit d'une syntaxe obsolète pour la compatibilité web, et vous ne devez pas vous y fier.
/\k/.test("k"); // true
Exemples
>Faire correspondre les guillemets
La fonction suivante correspond aux motifs title='xxx' et title="xxx" dans une chaîne de caractères. Pour vérifier que les guillemets correspondent, nous utilisons une rétro-référence au premier guillemet. L'accès au deuxième groupe capturant ([2]) retourne la chaîne de caractères comprise entre les guillemets correspondants :
function analyserTitre(chaineDeCaracteresMeta) {
return chaineDeCaracteresMeta.match(/title=(?<quote>["'])(.*?)\k<quote>/)[2];
}
analyserTitre('title="toto"'); // 'toto'
analyserTitre("title='toto' lang='en'"); // 'toto'
analyserTitre('title="Avantages des groupes capturant nommés"'); // "Avantages des groupes capturant nommés"
Spécifications
| Spécification |
|---|
| ECMAScript® 2027 Language Specification> # prod-AtomEscape> |