Vai al contenuto
eLearner.app
Modulo 7 · Lezione 2 di 426/32 nel corso~10 min
Lezioni del modulo (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

Esercizio#regex.m7.l2.e1
Tentativi: 0Caricamento…

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

Caricamento editor…
Mostra suggerimento

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

Soluzione disponibile dopo 3 tentativi

Esercizio di ripasso

Esercizio#regex.m7.l2.e2
Tentativi: 0Caricamento…

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

Caricamento editor…
Mostra suggerimento

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

Soluzione disponibile dopo 3 tentativi

Sfida aggiuntiva

Esercizio#regex.m7.l2.e3
Tentativi: 0Caricamento…

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

Caricamento editor…
Mostra suggerimento

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

Soluzione disponibile dopo 3 tentativi