RegExp 对象文字符号与构造函数符号的区别

ste*_*jay 0 javascript regex

var digits = "B2";
var re = new RegExp("/\d+/");
console.log(/\d+/.test(digits));
console.log("digits matches to :", digits.match(re));
Run Code Online (Sandbox Code Playgroud)

为什么digits.match(re) 返回NULL 而.test 返回true?当我运行digits.match("/\d+/"); 我得到了正确的答案。

4ca*_*tle 5

new RegExp()语法不使用斜线/作为分隔符。假设整个字符串是正则表达式。此外,必须对反斜杠进行转义,因为当您不引用转义字符时,这是字符串的要求。

这些是相同的:

digits.match(new RegExp("\\d+")); // 2

digits.match(/\d+/); // 2
Run Code Online (Sandbox Code Playgroud)