# Метод 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]`

## Смотрите также

- метод `test`,
  который проверяет строку
- метод `match`,
  который ищет совпадения в строке
- метод `matchAll`,
  который ищет все совпадения в строке
- метод `replace`,
  который выполняет поиск и замену
- метод `search`,
  который выполняет поиск
- метод `split`,
  который разбивает строку

← →
↑
en ru