[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.match [Back]  [Original]

RegExp.prototype[@@match]() - JavaScript | MDN

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.prototype[@@match]()

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 septembre 2016.

La mthode [@@match]() permet de rcuprer les correspondances obtenues lorsqu'on teste une chane de caractres par rapport une expression rationnelle (regexp).

Dans cet article

Exemple interactif

class RegExp1 extends RegExp {
  [Symbol.match](str) {
    const result = RegExp.prototype[Symbol.match].call(this, str);
    if (result) {
      return "VALID";
    }
    return "INVALID";
  }
}

console.log("2012-07-02".match(new RegExp1("([0-9]+)-([0-9]+)-([0-9]+)")));
// Expected output: "VALID"

Syntaxe

js
regexp[Symbol.match](str);

Paramtres

str

La chane de caractres (String) sur laquelle on veut chercher des correspondances.

Valeur de retour

Un tableau (Array) qui contient les rsultats des correspondances et les groupes capturs grce aux parenthse. S'il n'y a aucune correspondance, ce sera null.

Description

Cette mthode est appele de faon interne lorsqu'on utilise String.prototype.match(). Ainsi, les deux exemples qui suivent sont quivalents et le second est la version interne du premier :

js
"abc".match(/a/);

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

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

Exemples

Appel direct

Cette mthode peut tre utilise comme String.prototype.match() mais avec un objet this diffrent et un ordre des paramtres galement diffrent.

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

Utilisation de @@match avec une sous-classe

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

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

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

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# sec-regexp.prototype-%symbol.match%

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page