Skip to main content

prefer-regexp-exec

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

As String#match is defined to be the same as RegExp#exec when the regular expression does not include the g flag, prefer a consistent usage.

Attributes

  • Included in configs
    • ✅ Recommended
    • 🔒 Strict
  • Fixable
    • 🔧 Automated Fixer
    • 🛠 Suggestion Fixer
  • 💭 Requires type information

Rule Details

This rule is aimed at enforcing a consistent way to apply regular expressions to strings.

From String#match on MDN:

If the regular expression does not include the g flag, returns the same result as RegExp.exec().

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

Examples of code for this rule:

'something'.match(/thing/);

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

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

Options

// .eslintrc.json
{
"rules": {
"@typescript-eslint/prefer-regexp-exec": "warn"
}
}

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.