Meetod exec JavaScripti regulaaravaldistes

Meetod exec teostab otsingu stringis. Tulemusena tagastatakse leitud alamsõne ja selle grupid (pocket). Samas iga järgnev selle meetodi kutsumine alustab otsimist sellest kohast, kus eelmine leitud alamsõne lõppes.

Vaatame näidet. Olgu meil järgmine string:

javascriptlet str = '12 34 56';

Olgu meil järgmine regulaaravaldis:

javascriptlet reg = /\d+/g;

Kutsume järjest meetodit meie stringi jaoks:

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

Pärast kolme kutset, kuna meie stringis pole enam vastavusi regulaaravaldisega, siis järgmine meetodi kutse tagastab null:

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

Sellist meetodi omadust on mugav kasutada tsüklis:

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

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

Võib leida mitte ainult vastavuse, vaid ka jagada selle gruppidesse (pocket):

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

Antud on järgmine string:

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

Leidke sellest kõik alamsõned ajaga ja iga leitud puhul jagage tunnid, minutid ja sekundid gruppidesse (pocket).