Метод exec в регулярните изрази на JavaScript

Методът exec извършва търсене в низ. Резултатът е намереният подниз и неговите групи. При това всяко последващо извикване на този метод ще започва търсенето от мястото, в което е завършил предишният намерен подниз.

Нека разгледаме пример. Да предположим, че имаме следния низ:

javascriptlet str = '12 34 56';

Да предположим, че имаме следния регулярен израз:

javascriptlet reg = /\d+/g;

Нека последователно извикваме нашия метод за нашия низ:

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

След три извиквания, тъй като в нашия низ вече няма повече съвпадения с регулярния израз, следващото извикване на метода ще върне null:

javascriptlet res4 = reg.exec(str);
console.log(res4); // null

Тази особеност на метода е удобна за използване в цикъл:

javascriptlet str = '12 34 56';
let reg = /\d+/g;

let res;
while (res = reg.exec(str)) {
  console.log(res); // [12], [34], [56] 
}

Може да се намери не само съвпадението, но и да се разложи на групи:

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] 
}
Задание 1

Даден е следният низ:

javascriptlet str = '12:37:57 15:48:58 17:59:59';

Намерете в него всички поднизове с време и за всеки намерен разложете часовете, минутите и секундите в групи.