Javascript正则表达式不在脚本上工作,但在控制台上工作

Javascript正则表达式不在脚本上工作,但在控制台上工作,javascript,regex,Javascript,Regex,我尝试只验证以下4个数字: /^\d{4}$/.test('1234'); /^\d{4}$/.test(1234); 它在上面的页面上工作,但当我在脚本上使用它时,它不工作: var reg = new RegExp('^\d{4}$/'); reg.test(1234); reg.test('1234'); 两者都返回错误 如果我在浏览器控制台上进行如下测试: /^\d{4}$/.test('1234'); /^\d{4}$/.test(1234); 两者都在回归真实 我错过了什么

我尝试只验证以下4个数字:

/^\d{4}$/.test('1234');
/^\d{4}$/.test(1234);

它在上面的页面上工作,但当我在脚本上使用它时,它不工作:

var reg = new RegExp('^\d{4}$/');
reg.test(1234);
reg.test('1234');
两者都返回错误

如果我在浏览器控制台上进行如下测试:

/^\d{4}$/.test('1234');
/^\d{4}$/.test(1234);
两者都在回归真实


我错过了什么

问题是因为您的
RegExp
没有正确初始化

您可以执行以下任一操作:

// Note the \\ to escape the backslash
var reg = new RegExp('^\\d{4}$');


你可以直接在你的代码中使用
/^\d{4}$/.test(1234)
,如果你仍然需要这个变量,你应该像这样初始化它
var reg=RegExp(/^\d{4}$/)
看起来你缺少了一个斜杠
'^\d{4}$/'
你在脚本和控制台中使用了不同的代码。这就是为什么你会得到不同的结果。@RobbieMilejczak-close。对于
RegExp
构造函数,不能在字符串参数中使用开头斜杠和结尾斜杠。另外,
\d
需要在
RegExp
字符串参数中对其斜杠进行转义(即,
\\d
)。基本上,金良在下面的回答中就做到了这一点