String.prototype.match()

La méthode match() permet d'obtenir le tableau des correspondances entre la chaîne courante et une expression rationnelle.

Syntaxe

str.match(regexp)

Paramètres

regexp
Un objet représentant une expression rationnelle. Si ce n'est pas un objet de type RegExp, celui-ci sera converti en un objet RegExp grâce à new RegExp(regexp).

Valeur de retour

Un tableau (Array) contenant les correspondances et les groupes capturés avec les parenthèses, ou null s'il n'y a pas de correspondance.

Description

Si l'expression n'utilise pas le drapeau (flag) g, le résultat obtenu sera le même qu'avec RegExp.exec(). L'objet Array résultant possède une propriété input supplémentaire indiquant la chaîne sur laquelle l'expression a été appliquée. Il possède également la propriété index représentant l'indice de la correspondance dans la chaîne.

Si l'expression rationnelle utilise le drapeau g, la méthode renvoie un Array contenant l'ensemble des sous-chaînes correspondantes. S'il n'y a aucune correspondance, la méthode renverra null.

Voir aussi : les méthodes de RegExp

  • Si on souhaite savoir s'il existe des correspondances entre une chaîne de caractères et une expression rationnelle RegExp, on pourra utiliser search().
  • Si on ne souhaite obtenir que la première correspondance, on pourra plutôt utiliser RegExp.exec() à la place.
  • Si on souhaite obtenir les groupes correspondants et que le drapeau « global » est activé, il faudra utiliser RegExp.exec() à la place.

Exemples

Utiliser match()

Dans l'exemple suivant, on utilise match() afin de trouver la chaîne 'Chapitre' suivie par un ou plusieurs chiffres séparés par des points. L'expression utilisée active le drapeau i afin que la casse ne soit pas prise en compte.

var str = 'Pour plus d\'informations, voir le chapitre 3.4.5.1';
var re = /(chapitre \d+(\.\d)*)/i;
var trouvé = str.match(re);

console.log(trouvé);

// logs ['chapitre 3.4.5.1', 'chapitre 3.4.5.1', '.1']

// 'chapitre 3.4.5.1' est la première correspondance
// 'chapitre 3.4.5.1' est la valeur gardée en mémoire par
// `(chapitre \d+(\.\d)*)`.
// '.1' est la valeur gardée en mémoire par `(\.\d)`.

Utiliser les drapeaux g (global) et i (ignorer la casse) avec match()

Dans cet exemple, on illustre comment utiliser des drapeaux avec l'expression rationnelle qui est un argument de match(). Chaque lettre de A à E et de a à e est renvoyée, chacune dans un élément du tableau de résultat.

var str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
var regexp = /[A-E]/gi;
var tableau_correspondances = str.match(regexp);

console.log(tableau_correspondances);
// ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']

Spécifications

Spécification État Commentaires
ECMAScript 3rd Edition (ECMA-262) Standard Définition initiale. Implémentée avec JavaScript 1.2.
ECMAScript 5.1 (ECMA-262)
La définition de 'String.prototype.match' dans cette spécification.
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'String.prototype.match' dans cette spécification.
Standard  
ECMAScript 2017 Draft (ECMA-262)
La définition de 'String.prototype.match' dans cette spécification.
Projet  

Compatibilité des navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support simple (Oui) (Oui) (Oui) (Oui) (Oui)
Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support simple (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)

Notes spécifiques à Firefox/Gecko

  • À partir de Gecko 27 (Firefox 27 / Thunderbird 27 / SeaMonkey 2.24), cette méthode a été ajustée afin d'être conforme à ECMAScript. Lorsque match() est appelée sur une expression rationnelle globale, la propriété RegExp.lastIndex de l'objet sera redéfini à 0 (bug 501739).
  • À partir de Gecko 39 (Firefox 39 / Thunderbird 39 / SeaMonkey 2.36), les arguments non standards pour les drapeaux sont dépréciés et déclenchent des avertissements dans la console (bug 1142351). Cette propriété est propre à Gecko et sera retirée à l'avenir.
  • À partir de Gecko 47 (Firefox 47 / Thunderbird 47 / SeaMonkey 2.44), l'argument non-standard flags n'est plus supporté dans les versions hors release et sera bientôt retiré définitivement (bug 1245801).
  • À partir de Gecko 49 (Firefox 49 / Thunderbird 49 / SeaMonkey 2.46), l'argument non-standard flags n'est plus pris en charge (bug 1108382).

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight, babolivier, teoli, Jeremie, Country, Julien.stuby
 Dernière mise à jour par : SphinxKnight,