Saltar al contenido principal
eLearner.app
Módulo 7 · Lección 3 de 427/32 en el curso~12 min
Lecciones del módulo (3/4)

Replace con callback

Se la stringa di sostituzione non ti basta, passa una funzione: str.replace(regex, (match, ...groups) => string). La callback viene chiamata per ogni match e il suo valore di ritorno diventa la sostituzione.

JS
'prezzi: 10 20 30'.replace(/\d+/g, (m) => Number(m) * 1.22);
// "prezzi: 12.2 24.4 36.6" (IVA al 22%)

Argomenti della callback

JS
str.replace(regex, (match, p1, p2, ..., offset, original, groups) => ...);
  • match -- l'intero match.
  • p1, p2, \u2026 -- i gruppi catturati in ordine.
  • offset -- indice del match nella stringa originale.
  • original -- la stringa intera.
  • groups -- oggetto con i gruppi nominati (se presenti).
JS
'2024-03-15'.replace(/(\d{4})-(\d{2})-(\d{2})/, (_, a, m, g) => `${g}/${m}/${a}`);
// "15/03/2024"

La callback ti da' potenza arbitraria: parsing, lookup, conversione, escape HTML\u2026 tutto cio' che una stringa statica non puo' fare.

Argomenti avanzati della callback di replace

La funzione di callback riceve molteplici argomenti: il match intero, i singoli gruppi catturati, l'indice numerico del match all'interno del testo complessivo, e l'intera stringa originaria. Questo permette logiche di trasformazione sofisticate basate sul contesto.

Prova tu

Ejercicio#regex.m7.l3.e1
Intentos: 0Cargando...

Trova ogni numero intero nel testo. (In replace passeresti `(m) => Number(m) * 2` per raddoppiarlo.)

Cargando editor...
Mostrar pista

Usa \\d+ (uno o piu' cifre) per catturare ogni numero intero come singolo match.

Solución disponible después de 3 intentos

Esercizio di ripasso

Ejercicio#regex.m7.l3.e2
Intentos: 0Cargando...

Trova ogni email (forma semplificata: lettere/cifre/punti/underscore @ dominio). Cosi' una callback potrebbe redigerla in `***@dominio`.

Cargando editor...
Mostrar pista

Allarga la classe a [\\w.]+ per accettare punti nel nome utente e nel dominio.

Solución disponible después de 3 intentos

Sfida aggiuntiva

Ejercicio#regex.m7.l3.e3
Intentos: 0Cargando...

Matcha ogni parola composta da lettere nel testo per poterla trasformare in maiuscolo tramite callback.

Cargando editor...
Mostrar pista

Trova lettere semplici con [a-zA-Z]+.

Solución disponible después de 3 intentos