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

时间:2014-11-06 13:46:15

标签: javascript regex

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

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

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

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

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

这会对你有帮助。

var pattern = '^\\d+(?:\\.\\d{0,' + '5' + '})?',
    reg=new RegExp(pattern),
    x = Number(input.toString().match(reg));

答案 2 :(得分:0)

mask: new RegExp(`^[a-zA-Z0-9]{0,${maxLength}}$`)

对我有用