为什么正则表达式构造函数不起作用?

Ami*_*oki 1 javascript regex

我正在回答一个问题,然后返回 false

var regexp = new RegExp("([\w\.-]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})");
var result = regexp.test( $("#email").val() ); // returns false
Run Code Online (Sandbox Code Playgroud)

var regexp = /([\w\.-]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})/;
var result = regexp.test( $("#email").val() ); // returns true
Run Code Online (Sandbox Code Playgroud)

这是为什么??

the*_*eye 6

\使用RegExp构造函数时需要转义.

new RegExp("([\\w\\.-]+)@((?:[\\w]+\\.)+)([a-zA-Z]{2,4})");
Run Code Online (Sandbox Code Playgroud)

引自MDN的RegExp构造函数Docs,

使用构造函数时,需要使用普通的字符串转义规则(前面包含字符串的特殊字符).例如,以下内容是等效的:

var re = /\w+/;
var re = new RegExp("\\w+");
Run Code Online (Sandbox Code Playgroud)