Metode exec JavaScript regulārajās izteiksmēs
Metode exec veic meklēšanu
virknē. Tās rezultāts atgriež atrasto
apakšvirkni un tās capture groups (kabatas).
Turklāt katra nākamā šīs metodes izsaukšana
sāks meklēšanu no tās vietas,
kurā beidzās iepriekšējā
atrastā apakšvirkne.
Apskatīsim piemērā. Pieņemsim, ka mums ir šāda virkne:
javascriptlet str = '12 34 56';
Pieņemsim, ka mums ir šāda regulārā izteiksme:
javascriptlet reg = /\d+/g;
Izsauksim mūsu metodi secīgi mūsu virknei:
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ēc trim izsaukumiem, tā kā mūsu
virknē vairs nav atbilstību ar regulāro izteiksmi,
tad nākamais metodes izsaukums atgriezīs
null:
javascriptlet res4 = reg.exec(str);
console.log(res4); // null
Šo metodes īpatnību ir ērti izmantot ciklā:
javascriptlet str = '12 34 56';
let reg = /\d+/g;
let res;
while (res = reg.exec(str)) {
console.log(res); // [12], [34], [56]
}
Var atrast ne tikai atbilstību, bet arī to sadalīt capture groups (kabatas):
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]
}
Dota šāda virkne:
javascriptlet str = '12:37:57 15:48:58 17:59:59';
Atrast tajā visas apakšvirknes ar laiku un katrai atrastajai sadaliet stundas, minūtes un sekundes capture groups (kabatas).