From b77996b69b44a26b8685914a6de39c1408670ae1 Mon Sep 17 00:00:00 2001 From: "weiran.zsd" Date: Thu, 22 Mar 2018 00:27:09 +0800 Subject: [PATCH] Fix: no-invalid-regexp not understand variable for flags (fixes #10112) --- lib/rules/no-invalid-regexp.js | 15 ++++++--------- tests/lib/rules/no-invalid-regexp.js | 1 + 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/lib/rules/no-invalid-regexp.js b/lib/rules/no-invalid-regexp.js index e57029c9f82..7169e0ca770 100644 --- a/lib/rules/no-invalid-regexp.js +++ b/lib/rules/no-invalid-regexp.js @@ -98,20 +98,17 @@ module.exports = { return; } const pattern = node.arguments[0].value; - let flags = ""; + let flags = isString(node.arguments[1]) ? node.arguments[1].value : ""; - if (node.arguments[1]) { - flags = isString(node.arguments[1]) ? node.arguments[1].value : null; - if (allowedFlags) { - flags = flags.replace(allowedFlags, ""); - } + if (allowedFlags) { + flags = flags.replace(allowedFlags, ""); } // If flags are unknown, check both are errored or not. const message = validateRegExpFlags(flags) || ( - (flags === null) - ? validateRegExpPattern(pattern, true) && validateRegExpPattern(pattern, false) - : validateRegExpPattern(pattern, flags.indexOf("u") !== -1) + flags + ? validateRegExpPattern(pattern, flags.indexOf("u") !== -1) + : validateRegExpPattern(pattern, true) && validateRegExpPattern(pattern, false) ); if (message) { diff --git a/tests/lib/rules/no-invalid-regexp.js b/tests/lib/rules/no-invalid-regexp.js index 3b9dac536bd..305f4e0d383 100644 --- a/tests/lib/rules/no-invalid-regexp.js +++ b/tests/lib/rules/no-invalid-regexp.js @@ -23,6 +23,7 @@ ruleTester.run("no-invalid-regexp", rule, { "new RegExp", "new RegExp('.', 'im')", "global.RegExp('\\\\')", + "new RegExp('.', y)", { code: "new RegExp('.', 'y')", options: [{ allowConstructorFlags: ["y"] }] }, { code: "new RegExp('.', 'u')", options: [{ allowConstructorFlags: ["U"] }] }, { code: "new RegExp('.', 'yu')", options: [{ allowConstructorFlags: ["y", "u"] }] },