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]
}
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.