String.prototype.match()
La méthode match()
permet d'obtenir le tableau des correspondances entre la chaîne courante et une expression rationnelle.
Exemple interactif
Syntaxe
str.match(regexp);
Paramètres
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. Le contenu de ce tableau dépend de l'utilisation du marqueur pour la recherche globale g
:
- Si le marqueur
g
est utilisé, tous les résultats correspondants à l'expression rationnelle complète seront renvoyés mais les groupes capturants ne seront pas renvoyés. - Si le marqueur
g
n'est pas utilisé, seule la première correspondance et ses groupes capturants seront renvoyés. Dans ce cas, l'élément renvoyé aura des propriétés supplémentaires listées ci-après.
Propriétés supplémentaires
Comme indiqué ci-avant, les résultats peuvent contenir certaines propriétés supplémentaires :
groups
: un tableau de groupes capturants nommés ouundefined
si aucun groupe capturant n'a été défini. Voir la page sur les groupes et les intervalles pour plus d'informations.index
: l'indice de la chaîne de caractères où a été trouvée la correspondance.input
: une copie de la chaîne sur laquelle a été effectuée la recherche.
Description
Si l'expression n'utilise pas le drapeau (flag) g
, le résultat obtenu sera le même qu'avec RegExp.exec()
.
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 utiliserRegExp.test()
. - 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']
Utiliser un paramètre qui n'est pas une RegExp
Lorsque le paramètre passé à la fonction est une chaîne de caractères ou un nombre, il est converti de façon implicite en un objet RegExp
grâce à new RegExp(obj)
. Si c'est un nombre positif avec le signe +, la méthode RegExp()
ignorera ce signe.
var str1 = "NaN signifie : qui n'est pas un nombre.";
var str2 = "Mon père a 65 ans.";
str1.match("nombre"); // "nombre" est une chaîne, renvoie ["nombre"]
str1.match(NaN); // NaN est de type number, renvoie ["NaN"]
str2.match(65); // Renvoie ["65"]
str2.match(+65); // Renvoie également ["65"]
Spécifications
Specification |
---|
ECMAScript Language Specification # sec-string.prototype.match |
Compatibilité des navigateurs
BCD tables only load in the browser