Метод 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
После трех вызовов, так как в нашей
строке больше нет совпадений с регуляркой,
то следующий вызов метода вернет
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';
Найдите в ней все подстроки с временем и для каждого найденного разложите часы, минуты и секунды по карманам.