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
Exemple
#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'))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
#string.replaceAll(pattern, replacement)Paramètres
#pattern
string | RegExp
Texte ou expression régulière avec le flagg. 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
#const version = 'v1.2.3'
console.log(version.replaceAll('.', '-'))
console.log(version.replace(/./g, '-'))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.
const text = 'a-b-c'
console.log(text.replaceAll(/-/g, ' + '))
try {
text.replaceAll(/-/, ' + ')
} catch (error) {
console.log(error.name)
}const text = 'J’apprends html, css et javascript'
const loud = text.replaceAll(/html|css|javascript/g, (tech) => tech.toUpperCase())
console.log(loud)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
gavec une expression régulière. Sans lui, vous obtenez uneTypeErrorau lieu d’un résultat.
Entrées associées
#- 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.
- RegExpUne expression régulière : un modèle pour rechercher, valider et remplacer des fragments de texte.
- Array.prototype.join()Assemble les éléments du tableau en une seule chaîne avec le séparateur choisi.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.