# exec method

The `exec` method performs a string search using a given regular expression. The found substring and its capturing groups are returned as a result. In this case, each subsequent call to this method will start the search from the place where the previous found substring ended. If no match is found, it returns `null`.

## Syntax

`regular expression.test(string);`

## Example

We test the method:

`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);`

The code execution result:

`[12] [34] [56] null`

## Example

Let's use the method in a loop:

`let str = '12 34 56'; let reg = /\d+/g; let res; while (res = reg.exec(str)) { console.log(res); }`

The code execution result:

`[12] [34] [56]`

## Example

Found matches can be decomposed into capturing groups:

`let str = '12 34 56'; let reg = /(\d)(\d)/g; let res; while (res = reg.exec(str)) { console.log(res); }`

The code execution result:

`[12, 1, 2] [34, 3, 4] [56, 5, 6]`

## Example

Using the `lastIndex` property, you can set the position from which to start the search:

`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);`

The code execution result:

`[34] [56]`

## Example

Using the `y` modifier, you can fix the search start position:

`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);`

The code execution result:

`null [12]`

## See also

- the `test` method
  that checks a string
- the `match` method
  that searches for matches in a string
- the `matchAll` method
  that searches for all matches in a string
- the `replace` method
  that performs search and replacement
- the `search` method
  that performs a search
- the `split` method
  that splits a string

← →
↑
en ru