2 * @fileoverview Rule to flag when regex literals are not wrapped in parens
3 * @author Matt DuVall <http://www.mattduvall.com>
8 //------------------------------------------------------------------------------
10 //------------------------------------------------------------------------------
17 description: "require parenthesis around regex literals",
18 category: "Stylistic Issues",
20 url: "https://eslint.org/docs/rules/wrap-regex"
27 requireParens: "Wrap the regexp literal in parens to disambiguate the slash."
32 const sourceCode = context.getSourceCode();
37 const token = sourceCode.getFirstToken(node),
38 nodeType = token.type;
40 if (nodeType === "RegularExpression") {
41 const beforeToken = sourceCode.getTokenBefore(node);
42 const afterToken = sourceCode.getTokenAfter(node);
43 const ancestors = context.getAncestors();
44 const grandparent = ancestors[ancestors.length - 1];
46 if (grandparent.type === "MemberExpression" && grandparent.object === node &&
47 !(beforeToken && beforeToken.value === "(" && afterToken && afterToken.value === ")")) {
50 messageId: "requireParens",
51 fix: fixer => fixer.replaceText(node, `(${sourceCode.getText(node)})`)