Metoda exec v regulárních výrazech JavaScript
Metoda exec provádí vyhledávání v
řetězci. Výsledkem je nalezený
podřetězec a jeho zachycené skupiny. Každé
další volání této metody
začne hledat od místa,
ve kterém skončil předchozí
nalezený podřetězec.
Podívejme se na příklad. Předpokládejme, že máme následující řetězec:
let str = '12 34 56';
Předpokládejme, že máme následující regulární výraz:
let reg = /\d+/g;
Pojďme postupně volat naši metodu pro náš řetězec:
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
Po třech voláních, protože v našem
řetězci již nejsou žádné shody s regulárním výrazem,
vrátí další volání metody
null:
let res4 = reg.exec(str);
console.log(res4); // null
Tuto vlastnost metody je vhodné použít ve smyčce:
let str = '12 34 56';
let reg = /\d+/g;
let res;
while (res = reg.exec(str)) {
console.log(res); // [12], [34], [56]
}
Lze najít nejen shodu, ale také ji rozložit do zachycených skupin:
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]
}
Je dán následující řetězec:
let str = '12:37:57 15:48:58 17:59:59';
Najděte v něm všechny podřetězce s časem a pro každý nalezený rozložte hodiny, minuty a sekundy do zachycených skupin.