String.prototype.replaceAll()

Renvoie une nouvelle chaîne dans laquelle toutes les occurrences d’un motif ont été remplacées par le texte donné ou le résultat d’une fonction.

Renvoie
Une nouvelle chaîne dans laquelle toutes les correspondances ont été remplacées par le texte donné.
Modifie l’original
Non
Sur cette page

Exemple

#
JavaScript
const slug = 'cours javascript pour débutants'.replaceAll(' ', '-')
const template = 'Salut {name} ! {name}, tu as une nouvelle tâche.'

console.log(slug)
console.log(template.replaceAll('{name}', 'Léo'))
Console
cours-javascript-pour-débutants
Salut Léo ! Léo, tu as une nouvelle tâche.

Définition et utilisation

#

La méthode replaceAll() fonctionne comme replace(), mais remplace toujours toutes les correspondances, pas seulement la première. Pour un texte simple, vous n’avez pas besoin de construire une expression régulière avec le flag g ni de vous soucier des caractères spéciaux.

Le motif peut être un texte ou une expression régulière, mais celle-ci doit avoir le flag g. Sans lui, la méthode lève une TypeError. Le second argument, comme dans replace(), peut être un texte (avec des séquences $&, $1) ou une fonction.

Comme toutes les méthodes de chaînes, replaceAll() ne modifie pas l’original : elle renvoie une nouvelle chaîne.

Syntaxe

#
Syntaxe
string.replaceAll(pattern, replacement)

Paramètres

#
  • pattern

    string | RegExp

    Texte ou expression régulière avec le flag g. Toutes les occurrences seront remplacées.
  • replacement

    string | function

    Texte de remplacement ou fonction appelée pour chaque correspondance, dont le résultat se retrouve dans la nouvelle chaîne.

Plus d’exemples

#
Caractères spéciaux traités littéralement
JavaScript
const version = 'v1.2.3'

console.log(version.replaceAll('.', '-'))
console.log(version.replace(/./g, '-'))
Console
v1-2-3
------

Dans une expression régulière, le point signifie n’importe quel caractère, donc /./g a tout remplacé. replaceAll() avec une chaîne traite le point littéralement.

Une expression régulière exige le flag g
JavaScript
const text = 'a-b-c'

console.log(text.replaceAll(/-/g, ' + '))

try {
  text.replaceAll(/-/, ' + ')
} catch (error) {
  console.log(error.name)
}
Console
a + b + c
TypeError
Une fonction comme remplacement
JavaScript
const text = 'J’apprends html, css et javascript'
const loud = text.replaceAll(/html|css|javascript/g, (tech) => tech.toUpperCase())

console.log(loud)
Console
J’apprends HTML, CSS et JAVASCRIPT

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

#
  • Pour remplacer du texte simple, replaceAll() est le choix le plus clair et le plus lisible. Réservez les expressions régulières aux cas où vous avez besoin d’un motif, comme n’importe quel chiffre.
  • N’oubliez pas le flag g avec une expression régulière. Sans lui, vous obtenez une TypeError au lieu d’un résultat.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.