JavaScript中的动态正则表达式模式

JQu*_*ile 0 javascript regex

我有一些匹配小数点后一定位数的代码。目前,我有以下内容:

var input = getValueFromUser();
var count = getCount();
var x = Number(input.toString().match(/^\d+(?:\.\d{0,1})?/));
alert(x);
Run Code Online (Sandbox Code Playgroud)

此方法始终获取小数点后的第一个数字。但是,我想用中的值替换正则表达式中的1 count。我怎么做?我尝试了以下方法:

var pattern = '/^\d+(?:\.\d{0,' + count + '})?/';
var x = Number(input.toString().match(pattern));
Run Code Online (Sandbox Code Playgroud)

但是,现在,我总是得到0x

hin*_*ost 5

Regexp如果要使用动态构建的模式,则必须使用object:

var re = new RegExp('^\\d+(?:\\.\\d{0,' + count + '})?');
Run Code Online (Sandbox Code Playgroud)

  • 请注意,字符串中的反斜杠需要转义(与正则表达式文字中的反斜杠不同)。 (2认同)