Az exec metódus a JavaScript reguláris kifejezéseiben

Az exec metódus keresést végez egy sztringben. Az eredmény a megtalált részsztring és a zárójeles csoportjai (capturing groups). Ezenkívül minden további hívása ennek a metódusnak onnan kezdi a keresést, ahol az előző megtalált részsztring véget ért.

Nézzünk egy példát. Tegyük fel, hogy a következő sztringünk van:

javascriptlet str = '12 34 56';

Tegyük fel, hogy a következő reguláris kifejezésünk van:

javascriptlet reg = /\d+/g;

Hívjuk sorban a metódust a sztringünkre:

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

Három hívás után, mivel a sztringünkben nincs több egyezés a regulással, a metódus következő hívása null-t ad vissza:

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

Ezt a metódus sajátosságot kényelmes használni egy ciklusban:

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

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

Nem csak az egyezést lehet megtalálni, hanem zárójeles csoportokra is bontható:

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

Adott a következő sztring:

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

Keresse meg benne az összes időt tartalmazó részsztringet, és minden egyes találatnál bontsa csoportokra az órákat, perceket és másodperceket.