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 Performance Troubleshooting if you experience performance degredations after enabling type checked rules.

Resources