Metodo matchAll in JavaScript: corrispondenze multiple da una Stringa

JavaScript offre diverse funzionalità per lavorare con le stringhe, e una di queste è il metodo matchAll(). Questo avanzato metodo ci permette di estrarre tutte le corrispondenze di testo da una stringa utilizzando espressioni regolari. Di seguito viene riportata la sua sintassi:

stringa.matchAll(regexp)

Il metodo matchAll() accetta un parametro obbligatorio, regexp, che rappresenta un'espressione regolare globale che definisce il modello di ricerca. Quando invochiamo matchAll(), restituirà un iteratore che ci permette di scorrere tutte le corrispondenze trovate nella stringa.

let testo = "Il codice prodotto è ABC-123 e XYZ-456.";
let pattern = /[A-Z]{3}-\d{3}/g;
let risultati = testo.matchAll(pattern);
for (let match of risultati) {
	console.log(match[0]);
}
// Stampa:"ABC-123" e "XYZ-456"

Esempio: estrarre corrispondenze multiple da una stringa

Il metodo matchAll() è utile quando vogliamo ottenere tutte le corrispondenze che soddisfano un modello di ricerca all'interno di una stringa.

let testo = "JavaScript è un linguaggio di programmazione.";
let pattern = /\w+/g; // \w+ trova tutte le parole
let risultati = testo.matchAll(pattern);
for (let match of risultati) {
	console.log(match[0]);
}
// Stampa: "JavaScript", "è", "un", "linguaggio", "di", "programmazione"

Esempio: ottenere array di tutte le corrispondenze

Per ottenere un array di tutte le corrispondenze invece di un iteratore, possiamo utilizzare Array.from() come viene mostrato nel seguente esempio:

let testo = "La data di oggi è 2023-07-01 e domani sarà 2023-07-02.";
let pattern = /\d{4}-\d{2}-\d{2}/g; // Trova date nel formato YYYY-MM-DD
let risultati = Array.from(testo.matchAll(pattern));
console.log(risultati); // Stampa: ["2023-07-01", "2023-07-02"]