prefer-regexp-exec.md
1.47 KB
RegExp#exec
is used instead of String#match
if no global flag is provided (prefer-regexp-exec
)
Enforce that RegExp#exec
is faster than String#match
and both work the same when not using the /g
flag.
Rule Details
This rule is aimed at enforcing the more performant way of applying regular expressions on strings.
From String#match
on MDN:
If the regular expression does not include the g flag, returns the same result as
RegExp.exec()
.
From Stack Overflow
RegExp.prototype.exec
is a lot faster thanString.prototype.match
, but that’s because they are not exactly the same thing, they are different.
Examples of incorrect code for this rule:
'something'.match(/thing/);
'some things are just things'.match(/thing/);
const text = 'something';
const search = /thing/;
text.match(search);
Examples of correct code for this rule:
/thing/.exec('something');
'some things are just things'.match(/thing/g);
const text = 'something';
const search = /thing/;
search.exec(text);
Options
There are no options.
{
"@typescript-eslint/prefer-regexp-exec": "error"
}
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.