Javascript regex заменяет несколько значений

sus спросил: 12 мая 2018 в 04:16 в: javascript

У меня есть строка ввода как

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

С регулярным выражением я могу найти числа (более 4 в длину):

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

Как изменить эти два числовых значения в соответствии с вводом (min, max)

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

, чтобы, если min = 1501570800022 и max = 1517385600023, тогда ожидаемый результат является:

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


1 ответ

Darren Sweeney Zohaib Ijaz ответил: 12 мая 2018 в 04:44

Вы можете использовать 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));