String. prototype. match()
Fait correspondre une chaîne à une expression régulière. Renvoie un tableau avec la correspondance, toutes les correspondances, ou null.
- Renvoie
- Un tableau avec la correspondance et ses groupes (sans le flag
g), un tableau de toutes les correspondances (avec le flagg), ounullquand rien ne correspond. - Modifie l’original
- Non
Exemple
#const message = 'Exercice 12 pour 30 pts, exercice 13 pour 45 pts'
console.log(message.match(/\d+/g))
console.log(message.match(/(\d+) pts/))
console.log(message.match(/bonus/))Définition et utilisation
#La méthode match() compare une chaîne à une expression régulière et renvoie les fragments trouvés. Quand rien ne correspond, le résultat est null ; vérifiez donc toujours qu’une correspondance existe avant d’utiliser le résultat.
Le résultat dépend du flag g. Sans lui, vous obtenez les détails de la première correspondance : l’indice 0 contient tout le texte correspondant, les indices suivants les groupes capturés, et les propriétés index et groups sa position et ses groupes nommés. Avec le flag g, vous obtenez un simple tableau de toutes les correspondances, sans les groupes.
Quand vous avez besoin à la fois de toutes les correspondances et de leurs groupes, utilisez matchAll(), qui renvoie un itérateur. Si vous voulez seulement vérifier qu’un motif correspond, regex.test(text) est plus simple et renvoie true ou false.
Syntaxe
#string.match(regexp)Paramètres
#regexp
RegExp | string
Expression régulière. Une chaîne est convertie en expression vianew RegExp(), donc les caractères spéciaux, comme le point, gardent leur sens particulier.
Plus d’exemples
#const text = 'Échéance : 2026-10-15'
const result = text.match(/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/)
console.log(result.groups)
console.log(result.index)const text = 'Aucun chiffre dans cette phrase'
const numbers = text.match(/\d+/g) ?? []
console.log(numbers.length)
const hashtags = 'J’apprends #javascript et #css'.match(/#\w+/g)
console.log(hashtags)const codePattern = /^[A-Z]{3}-\d{4}$/
console.log(codePattern.test('ABC-2026'))
console.log(codePattern.test('abc-2026'))
console.log('ABC-2026'.match(codePattern)[0])Compatibilité des navigateurs
#Largement disponible
Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.
- Chrome
- Edge
- Firefox
- Safari
Bonnes pratiques
#- Le résultat peut être
null, et alorsresult[0]lève une erreur. Vérifiez la correspondance avant d’utiliser le résultat, ou, avec le flagg, écriveztext.match(re) ?? []. - Une expression avec le flag
gmémorise sa position danslastIndex, donc appelertest()plusieurs fois sur le même objet peut donner des résultats alternés. Pour une simple vérification, utilisez une expression sansg. - Vous pouvez récupérer toutes les correspondances avec leurs groupes via
[...text.matchAll(/(\d+) pts/g)].
Entrées associées
#- RegExpUne expression régulière : un modèle pour rechercher, valider et remplacer des fragments de texte.
- String.prototype.replace()Renvoie une nouvelle chaîne dans laquelle la première occurrence d’un motif (ou toutes, avec le flag g) a été remplacée par un autre texte.
- String.prototype.split()Découpe une chaîne en un tableau de fragments selon un séparateur : un caractère, un texte ou une expression régulière.
- String.prototype.includes()Vérifie si une chaîne contient le fragment de texte donné. Renvoie true ou false et distingue majuscules et minuscules.
- String.prototype.indexOf()Renvoie l’indice de la première occurrence du texte donné dans une chaîne, ou -1 s’il est absent.
- String.prototype.matchAll()Renvoie un itérateur sur toutes les correspondances d’une expression régulière, chacune avec ses groupes et sa position dans le texte.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.