no-useless-escape
Disallow unnecessary escape characters
Using the recommended
config from @eslint/js
in a configuration file
enables this rule
Some problems reported by this rule are manually fixable by editor suggestions
Escaping non-special characters in strings, template literals, and regular expressions doesn’t have any effect, as demonstrated in the following example:
let foo = "hol\a"; // > foo = "hola"
let bar = `${foo}\!`; // > bar = "hola!"
let baz = /\:/ // same functionality with /:/
Rule Details
This rule flags escapes that can be safely removed without changing behavior.
Examples of incorrect code for this rule:
/*eslint no-useless-escape: "error"*/
"'";
'"';
"#";
"e";
`"`;
`"${foo}"`;
`#{foo}`;
/!/;
/@/;
/[[]/;
/[a-z-]/;
Examples of correct code for this rule:
/*eslint no-useless-escape: "error"*/
"\"";
'\'';
"\x12";
"\u00a9";
"\371";
"xs\u2111";
`\``;
`\${${foo}}`;
`$\{${foo}}`;
/\\/g;
/\t/g;
/\w\$\*\^\./;
/[[]/;
/[\]]/;
/[a-z-]/;
Options
This rule has an object option:
allowRegexCharacters
- An array of characters that should be allowed to have unnecessary escapes in regular expressions. This is useful for characters like-
where escaping can prevent accidental character ranges. For example, in/[0\-]/
, the escape is technically unnecessary but helps prevent the pattern from becoming a range if another character is added later (e.g.,/[0\-9]/
vs/[0-9]/
).
allowRegexCharacters
Examples of incorrect code for the { "allowRegexCharacters": ["-"] }
option:
/*eslint no-useless-escape: ["error", { "allowRegexCharacters": ["-"] }]*/
/!/;
/@/;
/[a-z^]/;
Examples of correct code for the { "allowRegexCharacters": ["-"] }
option:
/*eslint no-useless-escape: ["error", { "allowRegexCharacters": ["-"] }]*/
/[0\-]/;
/[\-9]/;
/a\-b/;
When Not To Use It
If you don’t want to be notified about unnecessary escapes, you can safely disable this rule.
Version
This rule was introduced in ESLint v2.5.0.