javascript正则表达式替换多个值

时间:2018-06-05 17:56:53

标签: javascript

我有一个输入字符串

var x= "(toInteger(r.Time) > 1501570800000) AND (toInteger(r.Time) < 1517385600000 )"

使用正则表达式,我能够找到数字(长度超过4):

var regex = /(\d{4,})/
regex.exec(x)

如何根据输入(最小,最大)更改这两个数值

function (min,max){
x=x.replace(regex,"$1","$2");
}

这样,如果min = 1501570800022且max = 1517385600023,则预期输出为:

"(toInteger(r.Time) > 1501570800022) AND (toInteger(r.Time) < 1517385600023 )"

1 个答案:

答案 0 :(得分:0)

您可以使用String.prototype.replace使用回调函数,它将在每次迭代时替换匹配组,因此我们需要在第一次迭代时返回min,在第二次迭代时返回max

var x= "(toInteger(r.Time) > 1501570800000) AND (toInteger(r.Time) < 1517385600000 )";
var regex = /(\d{4,})/g;

function replace(min, max) {
   var iteration = 0;
   return x.replace(regex, () => {
      return arguments[iteration++]; // arguments is build in and contains all arguments passed to current function
   });
}

console.log(replace(123, 456));