Leçons du module (2/4)
Remplacement de base et `$1`
En JavaScript, String.prototype.replace(regex, replacement) effectue une recherche de motif et remplace chaque correspondance par la chaîne donnée. Avec le drapeau g, il remplace toutes les correspondances ; sans lui, seulement la première. replaceAll force le comportement global (et nécessite le drapeau g sur la regex).
'ciao mondo'.replace(/o/g, '0'); // "cia0 m0nd0"
'Mario Rossi'.replace(/(\w+) (\w+)/, '$2 $1'); // "Rossi Mario"Références dans la chaîne de remplacement
À l'intérieur de la chaîne de remplacement, ceux-ci sont spéciaux :
$1,$2, … -- référence arrière au groupe numéroté de la regex.$<name>-- référence arrière au groupe nommé.$&-- toute la correspondance.- `$`` -- texte avant la correspondance.
$'-- texte après la correspondance.$$-- un signe$littéral.
const data = '2024-03-15';
data.replace(/(\d{4})-(\d{2})-(\d{2})/, '$3/$2/$1');
// "15/03/2024"Reformatez la date en inversant l'ordre. La regex comporte 3 groupes, et dans la chaîne de remplacement vous y faites référence sous les noms $1, $2, $3.
Références spéciales dans les remplacements
En plus de $1 et $2, vous pouvez utiliser $& pour insérer l'intégralité du texte correspondant, $\`` pour tout le texte précédant la correspondance, et $'` pour tout le texte qui la suit. Cela permet d'effectuer des remplacements complexes sans même écrire de code JS.
À vous de jouer
Trouvez chaque date au format AAAA-MM-JJ avec trois groupes (année, mois, jour). De cette façon, vous pourriez utiliser replace pour obtenir JJ/MM/AAAA.
Afficher l'indice
Remplacez \d+ par \d{4}, \d{2}, \d{2} à l'intérieur de trois groupes capturés avec (...).
Solution disponible après 3 tentatives
Exercice de révision
Trouvez 'prenom nom' sous forme de deux groupes nommés `nome` et `cognome`, afin de pouvoir le réécrire sous la forme `cognome, nome` à l'aide de `$<cognome>, $<nome>`.
Afficher l'indice
Utilisez (?<nome>\w+) et (?<cognome>\w+) séparés par \s+.
Solution disponible après 3 tentatives
Défi supplémentaire
Créez un motif de capture pour inverser l'ordre du prénom et du nom du format `Nom, Prénom` au format `Prénom Nom`.
Afficher l'indice
Utilisez deux groupes de capture pour le nom et le prénom ; le remplacement sera effectué via $2 $1.
Solution disponible après 3 tentatives