| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.match | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
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).
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"
regexp[Symbol.match](str);
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.
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 :
"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.
Cette mthode peut tre utilise comme String.prototype.match() mais avec un objet this diffrent et un ordre des paramtres galement diffrent.
var re = /[0-9]+/g;
var str = "2016-01-02";
var rsultat = re[Symbol.match](str);
console.log(rsultat); // ["2016", "01", "02"]
@@match avec une sous-classeLes sous-classes de RegExp peuvent surcharger la mthode [@@match]() afin de modifier le comportement.
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
| Spcification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-regexp.prototype-%symbol.match% |
String.prototype.match()RegExp.prototype[@@replace]()RegExp.prototype[@@search]()RegExp.prototype[@@split]()RegExp.prototype.exec()RegExp.prototype.test()Cette page a t modifie le 22 mai 2026 par les contributeurices du MDN.
RegExpObject/FunctionObject.prototype.__defineGetter__()Object.prototype.__defineSetter__()Object.prototype.__lookupGetter__()Object.prototype.__lookupSetter__()Object.prototype.hasOwnProperty()Object.prototype.isPrototypeOf()Object.prototype.propertyIsEnumerable()Object.prototype.toLocaleString()Object.prototype.toString()Object.prototype.valueOf()Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |