Metoda exec în expresiile regulate JavaScript

Metoda exec efectuează căutarea într-un șir. Rezultatul returnat este subșirul găsit și grupurile (capturile) acestuia. Fiecare apel ulterior al acestei metode va începe căutarea din locul în care s-a terminat subșirul anterior găsit.

Să vedem un exemplu. Să presupunem că avem următorul șir:

javascriptlet str = '12 34 56';

Să presupunem că avem următoarea expresie regulată:

javascriptlet reg = /\d+/g;

Să apelăm succesiv metoda noastră pentru șirul nostru:

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

După trei apeluri, deoarece în șirul nostru nu mai există potriviri cu expresia regulată, următorul apel al metodei va returna null:

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

Această particularitate a metodei este convenabil de utilizat într-o buclă:

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

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

Se pot găsi nu numai potrivirea, ci și se poate descompune în grupurile de captură:

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

Este dat următorul șir:

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

Găsiți în el toate subșirurile cu ora și pentru fiecare potrivire găsită descompuneți orele, minutele și secundele în grupurile de captură.