50 lines
1.9 KiB
Diff
50 lines
1.9 KiB
Diff
diff --git a/lib/rules/no-useless-escape.js b/lib/rules/no-useless-escape.js
|
|
index 0e0f6f09f2c35f3276173c08f832cde9f2cf56a0..7dc22851715f3574d935f513c1b5e35552985711 100644
|
|
--- a/lib/rules/no-useless-escape.js
|
|
+++ b/lib/rules/no-useless-escape.js
|
|
@@ -65,13 +65,31 @@ module.exports = {
|
|
escapeBackslash: "Replace the `\\` with `\\\\` to include the actual backslash character."
|
|
},
|
|
|
|
- schema: []
|
|
+ schema: [{
|
|
+ type: "object",
|
|
+ properties: {
|
|
+ extra: {
|
|
+ type: "string",
|
|
+ default: ""
|
|
+ },
|
|
+ extraCharClass: {
|
|
+ type: "string",
|
|
+ default: ""
|
|
+ },
|
|
+ },
|
|
+ additionalProperties: false
|
|
+ }]
|
|
},
|
|
|
|
create(context) {
|
|
+ const options = context.options[0] || {};
|
|
+ const { extra, extraCharClass } = options;
|
|
const sourceCode = context.sourceCode;
|
|
const parser = new RegExpParser();
|
|
|
|
+ const NON_CHARCLASS_ESCAPES = union(REGEX_NON_CHARCLASS_ESCAPES, new Set(extra));
|
|
+ const CHARCLASS_ESCAPES = union(REGEX_GENERAL_ESCAPES, new Set(extraCharClass));
|
|
+
|
|
/**
|
|
* Reports a node
|
|
* @param {ASTNode} node The node to report
|
|
@@ -200,9 +218,9 @@ module.exports = {
|
|
let allowedEscapes;
|
|
|
|
if (characterClassStack.length) {
|
|
- allowedEscapes = unicodeSets ? REGEX_CLASSSET_CHARACTER_ESCAPES : REGEX_GENERAL_ESCAPES;
|
|
+ allowedEscapes = unicodeSets ? REGEX_CLASSSET_CHARACTER_ESCAPES : CHARCLASS_ESCAPES;
|
|
} else {
|
|
- allowedEscapes = REGEX_NON_CHARCLASS_ESCAPES;
|
|
+ allowedEscapes = NON_CHARCLASS_ESCAPES;
|
|
}
|
|
if (allowedEscapes.has(escapedChar)) {
|
|
return;
|