diff --git a/lib/rules/prefer-regex-literals.js b/lib/rules/prefer-regex-literals.js index eca2eaa3e39..0c31a995631 100644 --- a/lib/rules/prefer-regex-literals.js +++ b/lib/rules/prefer-regex-literals.js @@ -12,6 +12,7 @@ const astUtils = require("./utils/ast-utils"); const { CALL, CONSTRUCT, ReferenceTracker, findVariable, getStaticValue } = require("eslint-utils"); const { validateRegExpLiteral } = require("regexpp"); +const { canTokensBeAdjacent } = require("./utils/ast-utils"); //------------------------------------------------------------------------------ // Helpers @@ -312,9 +313,13 @@ module.exports = { messageId: "unexpectedRegExp", ...(noFix ? {} : { fix(fixer) { + const tokenAfter = sourceCode.getTokenAfter(node); + return fixer.replaceTextRange( node.range, - (text[node.range[0] - 1] === "/" ? " " : "") + newRegExpValue + (["in", "instanceof"].includes((sourceCode.getTokenAfter(node) || {}).value) && text[node.range[1]] === "i" ? " " : "") + (tokenBefore && !canTokensBeAdjacent(tokenBefore, newRegExpValue) && /\S/u.test(text[node.range[0] - 1]) ? " " : "") + + newRegExpValue + + (tokenAfter && !canTokensBeAdjacent(newRegExpValue, tokenAfter) && /\S/u.test(text[node.range[1]]) ? " " : "") ); } })