Passer au contenu principal
eLearner.app
Module 7 · Leçon 2 sur 426/32 dans le cours~10 min
Leçons du module (2/4)

Replace base e `$1`

In JavaScript, String.prototype.replace(regex, sostituzione) esegue un matching del pattern e sostituisce ogni match con la stringa indicata. Con flag g sostituisce tutti i match; senza, solo il primo. replaceAll forza il comportamento globale (e richiede flag g sulla regex).

JS
'ciao mondo'.replace(/o/g, '0'); // "cia0 m0nd0"
'Mario Rossi'.replace(/(\w+) (\w+)/, '$2 $1'); // "Rossi Mario"

Riferimenti nella stringa di sostituzione

Dentro la stringa di replace, questi sono speciali:

  • $1, $2, \u2026 -- backreference al gruppo numerato della regex.
  • $<nome> -- backreference al gruppo nominato.
  • $& -- l'intero match.
  • `$`` -- testo prima del match.
  • $' -- testo dopo il match.
  • $$ -- un singolo $ letterale.
JS
const data = '2024-03-15';
data.replace(/(\d{4})-(\d{2})-(\d{2})/, '$3/$2/$1');
// "15/03/2024"

Riformatta la data invertendo l'ordine. La regex ha 3 gruppi, e nella stringa di sostituzione li referenzi come $1, $2, $3.

Riferimenti speciali nelle sostituzioni

Oltre a $1, $2, puoi usare $& per inserire l'intero testo matchato, $ per tutto il testo che precede il match, e$'` per tutto quello che lo segue. Questo consente sostituzioni ricche anche senza scrivere codice JS.

Prova tu

Exercice#regex.m7.l2.e1
Tentatives : 0Chargement…

Trova ogni data in formato YYYY-MM-DD con tre gruppi (anno, mese, giorno). Cosi' potresti usare replace per ottenere DD/MM/YYYY.

Chargement de l'éditeur…
Afficher l'indice

Sostituisci \\d+ con \\d{4}, \\d{2}, \\d{2} dentro tre gruppi catturati con (...).

Solution disponible après 3 tentatives

Esercizio di ripasso

Exercice#regex.m7.l2.e2
Tentatives : 0Chargement…

Trova 'nome cognome' come due gruppi nominati `nome` e `cognome`, cosi' potresti riscriverlo come `cognome, nome` con `$<cognome>, $<nome>`.

Chargement de l'éditeur…
Afficher l'indice

Usa (?<nome>\\w+) e (?<cognome>\\w+) separati da \\s+.

Solution disponible après 3 tentatives

Sfida aggiuntiva

Exercice#regex.m7.l2.e3
Tentatives : 0Chargement…

Crea un pattern di cattura per invertire l'ordine di nome e cognome dal formato `Cognome, Nome` al formato `Nome Cognome`.

Chargement de l'éditeur…
Afficher l'indice

Usa due gruppi di cattura per catturare cognome e nome, la sostituzione avverrà tramite $2 $1.

Solution disponible après 3 tentatives