Character escapes should be used properly when constructing a regular expression from string literal

  • BAD_ESCAPE_AT_REGEXP_CONSTRUCTOR
  • Error
  • Medium
  • No tags

This rule applies when character escapes are not properly used when constructing a regular expression from string literal.

A regular expression can be constructed from a string literal using the RegExp() constructor. In the string literal used, normal character escape rules are applied just like any other string. This can be confusing because a regular expression has different sets of escaping rules.

For example, new RegExp('\\s') should be used to maintain the backslash in the constructed regular expression. If new RegExp('\s') is used instead, s will be matched instead of a whitespace character. Note that under the string escape rule, \s is interpreted just as s.

This rule also applies to String.prototype.match() and String.prototype.search() that also construct regular expressions from string arguments.

Noncompliant Code Example

View with compliant examples side by side
function foo(x) {
    return new RegExp('\$' + x); // BAD_ESCAPE_AT_REGEXP_CONSTRUCTOR alarm because '\$' is not properly escaped.
}

Compliant Code Example

View with noncompliant examples side by side
function foo(x) {
    return new RegExp('\\$' + x);
}

Version

This rule was introduced in DeepScan 1.31.0.

See