Skip to main content

prefer-regexp-exec

Enforce RegExp#exec over String#match if no global flag is provided.

🔧

Some problems reported by this rule are automatically fixable by the --fix ESLint command line option.

💭

This rule requires type information to run.

String#match is defined to work the same as RegExp#exec when the regular expression does not include the g flag. Keeping to consistently using one of the two can help improve code readability.

This rule reports when a String#match call can be replaced with an equivalent RegExp#exec.

RegExp#exec may also be slightly faster than String#match; this is the reason to choose it as the preferred usage.

.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/prefer-regexp-exec": "error"
}
};

Try this rule in the playground ↗

Examples

'something'.match(/thing/);

'some things are just things'.match(/thing/);

const text = 'something';
const search = /thing/;
text.match(search);
Open in Playground

Options

This rule is not configurable.

When Not To Use It

If you prefer consistent use of String#match for both with g flag and without it, you can turn this rule off.


Type checked lint rules are more powerful than traditional lint rules, but also require configuring type checked linting.

See Troubleshooting > Linting with Type Information > Performance if you experience performance degredations after enabling type checked rules.

Resources