Fonctionnement général
La méthode replace() permet d'intervertir un segment spécifique au sein d'un objet chaîne caractères. Elle peut cibler du texte littéral ou s'appuyer sur un modèle défini par une expression régulière pour effectuer les substitutions.
Syntaxe de base
variableChaîne.replace(expressionRégulière, nouveauContenu)
| Paramètre | Description |
|---|---|
expressionRégulière |
Obligatoire. Correspond à la séquence recherchée. Si c'est une simple chaîne, elle sera traitée comme du texte brut sans interprétation de motifs spéciaux. |
nouveauContenu |
Obligatoire. Peut être fourni sous forme de nouvelle chaîne de caractères ou d'une fonction générant dynamiquement le résultat du remplacement. |
Résultat retourné
Cette fonction ne modifie pas la chaîne originale (immuabilité des strings JS). Elle retourne une copie entière de l'objet chaîne où chaque occurrence trouvée selon les paramètres expressionRégulière a été remplacée par nouveauContenu.
Si le drapeau g (global) est actif dans l'expression régulière, toutes les correspondances sont échangées. Sinon, seul le premier match trouvé est substitué.
Spécificités du remplacement
Le paramètre nouveauContenu supporte des métacaractères spécifiques lors de l'utilisation d'une chaîne classique :
$1,$2... : Réinjectent le contenu des groupes de capture numérotés.$&: Insère le texte complet correspondant à la recherche.- `$`` : Ajoute le préfixe précédant le motif trouvé.
$': Ajoute le suffixe suivant le motif trouvé.$$: Permet d'écrire un signe dollar littéral dans la sortie.
Notez qu'il est également possible de passer une fonction en tant que second argument. Cette fonction est invoquée pour chaque correspondance détectée. Ses arguments incluent le texte apparié, les groupes capturés éventuels, l'index de début du match dans la chaîne, et la chaîne source complète.
Applications pratiques
Remplacement simple
Remplace une occurrence unique par défaut.
const phrase = "Bonjour tout le monde";
const resultat = phrase.replace("monde", "planète");
console.log(resultat); // Affiche : Bonjour tout le planète
Remplacement global
L'utilisation du drapeau /g assure que tous les cas similaires sont traités.
let texte = "Apprendre le JS est facile";
let modifie = texte.replace(/le/g, "cette");
console.log(modifie); // Affiche : Apprendre cette JS est facile
Gestion des majuscules via Regex
Dans le cas où la casse importe peu, l'option /i ignore la distinction minuscule/mjauscule.
const mot = "jaVaScRipt";
const normalise = mot.replace(/javascript/i, "JavaScript");
// normalise vaut maintenant "JavaScript"
Inversion de variables de capture
Utiliser des parenthèses pour isoler des parties de la chaîne permet de réorganiser le résultat.
const personne = "Dupont, Marie";
const reformate = personne.replace(/([a-zA-Z]+), ([a-zA-Z]+)/, "$2 $1");
// Reformate : Marie Dupont
Transformation dynamique avec fonction
Pour appliquer une logique complexe, comme rendre chaque mot en majusucle initial, une fonction de rappel est idéale.
const titre = "bonjour le développement web";
const formated = titre.replace(/\b\w+\b/g, (m) =>
m.charAt(0).toUpperCase() + m.slice(1)
);
// Résultat : Bonjour Le Développement Web
Nettoyage de syntaxe
Ici, on transforme des guillemets typographiques en caractères standards.
const input = '"donnée1", "donnée2"';
const cleaned = input.replace(/"([^"]*)"/g, "'$1'");
// Resulat: 'donnée1', 'donnée2'