Метад exec у рэгулярках JavaScript
Метад exec ажыццяўляе пошук па
радку. Вынікам вяртаецца знойдзеная
падрадок і яе карманы. Пры гэтым кожны
наступны вызаў гэтага метаду
будзе пачынаць пошук з таго месца,
у якім скончылася папярэдняя
знойдзеная подстрока.
Давайце паглядзім на прыкладзе. Хай у нас ёсць наступны радок:
let str = '12 34 56';
Хай у нас ёсць наступнае рэгулярнае выраз:
let reg = /\d+/g;
Давайце будзем паслядоўна выклікаць наш метад для нашага радка:
let 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
Пасля трох вызаваў, так як у нашiм
радку больш няма супадзенняў з рэгуляркай,
то наступны вызаў метаду верне
null:
let res4 = reg.exec(str);
console.log(res4); // null
Такую асаблівасць метаду зручна выкарыстоўваць у цыкле:
let str = '12 34 56';
let reg = /\d+/g;
let res;
while (res = reg.exec(str)) {
console.log(res); // [12], [34], [56]
}
Можна знайсці не толькі супадзенне, але і разкласці яго па карманах:
let 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]
}
Дана наступны радок:
let str = '12:37:57 15:48:58 17:59:59';
Знайдзіце ў ёй усе подстрокі з часам і для кожнага знойдзенага разлажыце гадзіны, хвіліны і секунды па карманах.