Метод exec
Метод exec
осуществляет поиск по
строке по заданному регулярному выражению. Результатом возвращается найденная
подстрока и ее карманы. При этом каждый
последующий вызов данного метода
будет начинать поиск с того места,
в котором закончилась предыдущая
найденная подстрока. Если совпадение
не найдено - возвращается null
.
Синтаксис
регулярное_выражение.test(строка);
Пример
Проверим работу метода:
let str = '12 34 56';
let reg = /\d+/g;
let res1 = reg.exec(str);
console.log(res1);
let res2 = reg.exec(str);
console.log(res2);
let res3 = reg.exec(str);
console.log(res3);
let res4 = reg.exec(str);
console.log(res4);
Результат выполнения кода:
[12]
[34]
[56]
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]
Пример
С помощью свойства lastIndex
можно задать позицию, с которой следует
начинать поиск:
let str = '12 34 56';
let reg = /\d+/g;
reg.lastIndex = 2;
let res1 = reg.exec(str)
console.log(res1);
let res2 = reg.exec(str)
console.log(res2);
Результат выполнения кода:
[34]
[56]
Пример
С помощью модификатора y
можно зафиксировать позицию
начала поиска:
let str = '12 34 56';
let reg = /\d+/y;
reg.lastIndex = 2;
let res1 = reg.exec(str)
console.log(res1);
let res2 = reg.exec(str)
console.log(res2);
Результат выполнения кода:
null
[12]