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).
'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.
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
Trova ogni data in formato YYYY-MM-DD con tre gruppi (anno, mese, giorno). Cosi' potresti usare replace per ottenere DD/MM/YYYY.
Mostra suggerimento
Sostituisci \\d+ con \\d{4}, \\d{2}, \\d{2} dentro tre gruppi catturati con (...).
Soluzione disponibile dopo 3 tentativi
Esercizio di ripasso
Trova 'nome cognome' come due gruppi nominati `nome` e `cognome`, cosi' potresti riscriverlo come `cognome, nome` con `$<cognome>, $<nome>`.
Mostra suggerimento
Usa (?<nome>\\w+) e (?<cognome>\\w+) separati da \\s+.
Soluzione disponibile dopo 3 tentativi
Sfida aggiuntiva
Crea un pattern di cattura per invertire l'ordine di nome e cognome dal formato `Cognome, Nome` al formato `Nome Cognome`.
Mostra suggerimento
Usa due gruppi di cattura per catturare cognome e nome, la sostituzione avverrà tramite $2 $1.
Soluzione disponibile dopo 3 tentativi