La méthode [@@match]() permet de récupérer les correspondances obtenues lorsqu'on teste une chaîne de caractères par rapport à une expression rationnelle (regexp).

Syntaxe

regexp[Symbol.match](str)

Paramètres

str
La chaîne de caractères (String) sur laquelle on veut chercher des correspondances.

Valeur de retour

Un tableau (Array) qui contient les résultats des correspondances et les groupes capturés grâce aux parenthèse. S'il n'y a aucune correspondance, ce sera null.

Description

Cette méthode est appelée de façon interne lorsqu'on utilise String.prototype.match(). Ainsi, les deux exemples qui suivent sont équivalents et le second est la version interne du premier :

'abc'.match(/a/);

/a/[Symbol.match]('abc');

Cette méthode existe afin de permettre d'adapter le comportement de la recherche des correspondances pour les sous-classes de RegExp.

Exemples

Appel direct

Cette méthode peut être utilisée comme String.prototype.match() mais avec un objet this différent et un ordre des paramètres également différent.

var re = /[0-9]+/g;
var str = '2016-01-02';
var résultat = re[Symbol.match](str);
console.log(résultat);  // ["2016", "01", "02"]

Utilisation de @@match avec une sous-classe

Les sous-classes de RegExp peuvent surcharger la méthode [@@match]() afin de modifier le comportement.

class MaRegExp extends RegExp {
  [Symbol.match](str) {
    var résultat = RegExp.prototype[Symbol.match].call(this, str);
    if (!résultat) return null;
    return {
      group(n) {
        return résultat[n];
      }
    };
  }
}

var re = new MaRegExp('([0-9]+)-([0-9]+)-([0-9]+)');
var str = '2016-01-02';
var résultat = str.match(re); // String.prototype.match appelle re[@@match].
console.log(résultat.group(1)); // 2016
console.log(résultat.group(2)); // 01
console.log(résultat.group(3)); // 02

Spécifications

Spécification État Commentaires
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'RegExp.prototype[@@match]' dans cette spécification.
Standard Définition initiale.
ECMAScript Latest Draft (ECMA-262)
La définition de 'RegExp.prototype[@@match]' dans cette spécification.
Projet  

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari pour iOSSamsung InternetNode.js
Support simpleChrome Support complet OuiEdge Support complet OuiFirefox Support complet 49IE Aucun support NonOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 49Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet 6.0.0

Légende

Support complet  
Support complet
Aucun support  
Aucun support

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight
Dernière mise à jour par : SphinxKnight,