Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. Référence
  4. Objets natifs standards
  5. String
  6. String.prototype.matchAll()

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 EnglishAlways switch to English

String.prototype.matchAll()

Baseline Widely available

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis ⁨janvier 2020⁩.

La méthodematchAll() renvoie un itérateur contenant l'ensemble des correspondances entre une chaîne de caractères d'une part et une expression rationnelle d'autre part (y compris les groupes capturants).

Exemple interactif

const regexp = /t(e)(st(\d?))/g;const str = "test1test2";const array = [...str.matchAll(regexp)];console.log(array[0]);// Expected output: Array ["test1", "e", "st1", "1"]console.log(array[1]);// Expected output: Array ["test2", "e", "st2", "2"]

Syntaxe

js
str.matchAll(regexp);

Paramètres

regexp

Un objet représentant une expression rationnelle. Si cet objet n'est pas une instance deRegExp, il est automatiquement et implicitement converti en une telle instance à l'aide denew RegExp(obj).

Valeur de retour

Unitérateur.

Exemples

Regexp.exec() etmatchAll()

Avant l'apparition dematchAll() en JavaScript, il était possible d'utiliserRegExp.exec (et des expressions rationnelles utilisant le marqueur/g) dans une boucle afin d'obtenir l'ensemble des correspondances :

js
const regexp = RegExp("foo*", "g");const str = "table football, foosball";while ((matches = regexp.exec(str)) !== null) {  console.log(    `${matches[0]} trouvé. Prochaine recherche à partir de ${regexp.lastIndex}.`,  );  // dans la console : "foo trouvé. Prochaine recherche à partir de 9."  // dans la console : "foo trouvé. Prochaine recherche à partir de 19."}

AvecmatchAll(), on peut éviter la bouclewhile et le marqueur global. On récupère l'itérateur et on utilise une bouclefor...of,la décomposition de tableau ou encoreArray.from() :

js
const regexp = RegExp("foo*", "g");const str = "table football, foosball";let matches = str.matchAll(regexp);for (const match of matches) {  console.log(match);}// Array [ "foo" ]// Array [ "foo" ]// l'itérateur est épuise après l'itération via for..of// On rappelle matchAll afin de créer un nouvel itérateurmatches = str.matchAll(regexp);Array.from(matches, (m) => m[0]);// Array [ "foo", "foo" ]

Meilleur accès aux groupes capturants

Un autre avantage dematchAll() est un meilleur accès aux groupes capturants. De fait, les groupes capturants sont ignorés parmatch() lorsqu'on utilise le marqueur global/g :

js
var regexp = /t(e)(st(\d?))/g;var str = "test1test2";str.match(regexp);// Array ['test1', 'test2']

AvecmatchAll(), on peut y accéder :

js
let array = [...str.matchAll(regexp)];array[0];// ['test1', 'e', 'st1', '1', index: 0, input: 'test1test2', length: 4]array[1];// ['test2', 'e', 'st2', '2', index: 5, input: 'test1test2', length: 4]

Spécifications

Specification
ECMAScript® 2026 Language Specification
# sec-string.prototype.matchall

Compatibilité des navigateurs

Voir aussi

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2025 Movatter.jp