diff --git a/lib/rules/require-unicode-regexp.js b/lib/rules/require-unicode-regexp.js index 2fe1539cfcc..943137cb5d6 100644 --- a/lib/rules/require-unicode-regexp.js +++ b/lib/rules/require-unicode-regexp.js @@ -78,6 +78,10 @@ module.exports = { for (const { node: refNode } of tracker.iterateGlobalReferences(trackMap)) { const [patternNode, flagsNode] = refNode.arguments; + + if (patternNode && patternNode.type === "SpreadElement") { + continue; + } const pattern = getStringIfConstant(patternNode, scope); const flags = getStringIfConstant(flagsNode, scope); diff --git a/tests/lib/rules/require-unicode-regexp.js b/tests/lib/rules/require-unicode-regexp.js index 22ada7aacf6..a75f6863168 100644 --- a/tests/lib/rules/require-unicode-regexp.js +++ b/tests/lib/rules/require-unicode-regexp.js @@ -29,6 +29,7 @@ ruleTester.run("require-unicode-regexp", rule, { "new RegExp('', 'u')", "RegExp('', 'gimuy')", "RegExp('', `gimuy`)", + "RegExp(...patternAndFlags)", "new RegExp('', 'gimuy')", "const flags = 'u'; new RegExp('', flags)", "const flags = 'g'; new RegExp('', flags + 'u')", @@ -36,6 +37,7 @@ ruleTester.run("require-unicode-regexp", rule, { "new RegExp('', flags)", "function f(flags) { return new RegExp('', flags) }", "function f(RegExp) { return new RegExp('foo') }", + "function f(patternAndFlags) { return new RegExp(...patternAndFlags) }", { code: "new globalThis.RegExp('foo')", env: { es6: true } }, { code: "new globalThis.RegExp('foo')", env: { es2017: true } }, { code: "new globalThis.RegExp('foo', 'u')", env: { es2020: true } }, @@ -77,6 +79,13 @@ ruleTester.run("require-unicode-regexp", rule, { ] }] }, + { + code: "RegExp()", + errors: [{ + messageId: "requireUFlag", + suggestions: null + }] + }, { code: "RegExp('foo')", errors: [{