Metoden exec i JavaScripts reguljära uttryck

Metoden exec utför en sökning i en sträng. Resultatet är den matchade delsträngen och dess fångstgrupper. Varje efterföljande anrop av denna metod kommer att börja sökningen från den plats där den föregående matchade delsträngen slutade.

Låt oss titta på ett exempel. Antag att vi har följande sträng:

javascriptlet str = '12 34 56';

Antag att vi har följande reguljära uttryck:

javascriptlet reg = /\d+/g;

Låt oss sekventiellt anropa vår metod för vår sträng:

javascriptlet 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

Efter tre anrop, eftersom det i vår sträng inte finns fler träffar med regexet, kommer nästa anrop av metoden att returnera null:

javascriptlet res4 = reg.exec(str);
console.log(res4); // null

Denna egenskap hos metoden är praktisk att använda i en loop:

javascriptlet str = '12 34 56';
let reg = /\d+/g;

let res;
while (res = reg.exec(str)) {
  console.log(res); // [12], [34], [56] 
}

Man kan inte bara hitta matchningen, utan också dela upp den i fångstgrupper:

javascriptlet 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] 
}
Задание 1

Följande sträng är given:

javascriptlet str = '12:37:57 15:48:58 17:59:59';

Hitta alla delsträngar med tid i den och för varje hittad, dela upp timmar, minuter och sekunder i fångstgrupper.