Maison >interface Web >js tutoriel >Comment puis-je accéder aux groupes correspondants dans les expressions régulières JavaScript ?

Comment puis-je accéder aux groupes correspondants dans les expressions régulières JavaScript ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-29 16:42:18932parcourir

How Can I Access Matched Groups in JavaScript Regular Expressions?

Accéder aux groupements correspondants dans les expressions régulières JavaScript

Lors de l'utilisation d'expressions régulières pour faire correspondre des modèles dans des chaînes, il est souvent souhaitable d'accéder à des parties spécifiques du texte correspondant. JavaScript propose plusieurs façons d'y parvenir.

Dans votre exemple, vous avez correctement utilisé une expression régulière avec des parenthèses pour capturer une partie de la chaîne. Cependant, le problème que vous avez rencontré ne concernait pas l'expression régulière elle-même, mais la façon dont vous accédiez aux groupes correspondants.

Accès aux groupes avec .exec()

Le fichier . La méthode exec() renvoie un tableau contenant la totalité de la chaîne correspondante comme premier élément, suivi de tous les groupes capturés. Pour accéder au premier groupe capturé (la partie "abc" dans votre exemple), vous utiliserez arr[1] :

let myString = "something format_abc";
let arr = /(?:^|\s)format_(.*?)(?:\s|$)/.exec(myString);

console.log(arr[1]); // Prints: abc

Utilisation de groupes de capture nommés

Vous pouvez également nommer vos groupes de capture à l'aide d'une syntaxe d'expressions régulières telle que (?). Cela vous permet d'accéder au texte capturé par son nom :

let myString = "something format_abc";
let arr = /(?:^|\s)format_(?<text>.*?)(?:\s|$)/.exec(myString);

console.log(arr.groups.text); // Prints: abc

Syntaxe alternative avec des groupes de capture nommés :

Dans ECMAScript 2018, vous pouvez utiliser une syntaxe légèrement différente syntaxe pour les groupes de capture nommés, en entourant le nom du groupe en bouclé accolades :

let myString = "something format_abc";
let arr = /(?:^|\s)format_({text}.*?)(?:\s|$)/.exec(myString);

console.log(arr.groups.text); // Prints: abc

Faire correspondre plusieurs occurrences avec .matchAll()

La méthode .matchAll() a été introduite dans ECMAScript 2020 et fournit une API basée sur un itérateur pour faire correspondre plusieurs occurrences d'un modèle dans une chaîne. Il renvoie un itérateur qui génère des résultats de correspondance sous forme de tableau pour chaque correspondance, et vous pouvez accéder aux groupes capturés dans chaque résultat.

Pour utiliser .matchAll() dans votre exemple :

let myString = "something format_abc and something format_xyz";
let matches = myString.matchAll(/(?:^|\s)format_(.*?)(?:\s|$)/g);

for (let match of matches) {
  console.log(match[1]); // Prints: abc, then xyz
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn