Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

RegExp.$1, …, RegExp.$9

Obsolète

Évitez d'utiliser cette fonctionnalité dans de nouveaux projets. The RegExp static properties may have unintended side effects. Cette fonctionnalité peut être candidate à la suppression des standards web ou des navigateurs.

Note : Toutes les propriétés statiques de RegExp qui exposent l'état de la dernière correspondance globalement sont obsolètes. Voir Fonctionnalités RegExp obsolètes pour plus d'informations.

La propriété d'accesseur statique RegExp.$1, …, RegExp.$9 retourne les sous-chaînes de caractères entre parenthèses correspondant aux groupes capturés.

Description

Comme $1 à $9 sont des propriétés statiques de RegExp, vous les utilisez toujours sous la forme RegExp.$1, RegExp.$2, etc., plutôt qu'en tant que propriétés d'un objet RegExp que vous avez créé.

Les valeurs de $1, …, $9 sont mises à jour chaque fois qu'une instance de RegExp (mais pas d'une sous-classe de RegExp) réussit une correspondance. Si aucune correspondance n'a été effectuée, ou si la dernière correspondance ne contient pas le groupe capturant correspondant, la propriété respective est une chaîne de caractères vide. L'accesseur en écriture de chaque propriété est undefined, vous ne pouvez donc pas modifier les propriétés directement.

Le nombre de sous-chaînes de caractères entre parenthèses possibles est illimité, mais l'objet RegExp ne peut contenir que les neuf premières. Vous pouvez accéder à toutes les sous-chaînes de caractères entre parenthèses par les index du tableau retourné.

$1, …, $9 peuvent également être utilisés dans la chaîne de caractères de remplacement de String.prototype.replace(), mais cela n'a aucun rapport avec les propriétés héritées RegExp.$n.

Exemples

Utiliser $n avec RegExp.prototype.test()

Le script suivant utilise la méthode RegExp.prototype.test() pour récupérer un nombre dans une chaîne de caractères générique.

js
const chaine = "Test 24";
const nombre = /(\d+)/.test(chaine) ? RegExp.$1 : "0";
nombre; // "24"

Veuillez noter que toute opération impliquant l'utilisation d'autres expressions rationnelles entre un appel à re.test(chaine) et la propriété RegExp.$n peut avoir des effets secondaires, de sorte que l'accès à ces propriétés spéciales doit être effectué immédiatement, sinon le résultat peut être inattendu.

Spécifications

Spécification
Legacy RegExp features
# additional-properties-of-the-regexp-constructor

Compatibilité des navigateurs

Voir aussi