Заменить можно использовать функцию:
let input = "We have a foobar which can provide a maximum of 20 foo per bar.";
console.log(
input.replace(/(?:\ba )?maximum of ([0-9]+)\b/, function (all, max) {
return "<" + (max / 1 + 1);
})
);
Это соответствует /(?:\ba )?maximum of ([0-9]+)\b/
(с необязательным начальным переносом слов и a
), а затем запускает функцию для результатов: полное совпадение (который мы не используем), а затем номер. Затем мы можем соединить этот сегмент с пересмотренным номером. Я делю на единицу, чтобы гарантировать, что max
рассматривается как число (иначе это будет строка, таким образом, конкатенация к 201
вместо 21
).