Il metodo exec nelle espressioni regolari JavaScript
Il metodo exec esegue una ricerca in una
stringa. Il risultato restituito è la sottostringa
trovata e i suoi gruppi di cattura. Inoltre,
ogni chiamata successiva di questo metodo
inizierà la ricerca dal punto in cui
è terminata la precedente sottostringa
trovata.
Vediamo un esempio. Supponiamo di avere la seguente stringa:
let str = '12 34 56';
Supponiamo di avere la seguente espressione regolare:
let reg = /\d+/g;
Eseguiamo sequenzialmente le chiamate del nostro metodo per la nostra stringa:
let res1 = reg.exec(str);
console.log(res1[0]); // 12
let res2 = reg.exec(str);
console.log(res2[0]); // 34
let res3 = reg.exec(str);
console.log(res3[0]); // 56
Dopo tre chiamate, poiché nella nostra
stringa non ci sono più corrispondenze con l'espressione regolare,
la chiamata successiva del metodo restituirà
null:
let res4 = reg.exec(str);
console.log(res4); // null
Questa caratteristica del metodo è comoda da utilizzare in un ciclo:
let str = '12 34 56';
let reg = /\d+/g;
let res;
while (res = reg.exec(str)) {
console.log(res); // [12], [34], [56]
}
È possibile trovare non solo la corrispondenza, ma anche scomporla nei gruppi di cattura:
let str = '12 34 56';
let reg = /(\d)(\d)/g;
let res;
while (res = reg.exec(str)) {
console.log(res); // [12, 1, 2], [34, 3, 4], [56, 5, 6]
}
Data la seguente stringa:
let str = '12:37:57 15:48:58 17:59:59';
Trova tutte le sottostringhe con l'orario e per ogni corrispondenza scomponi ore, minuti e secondi nei gruppi di cattura.