我有一个字符串,例如“我们有一个foobar,每个bar最多可以提供20个foo。”我想用<number++替换每次出现的“最大” +任何长度的数字。上述字符串将导致:


  “我们有一个foobar,每个bar可以提供

我坚韧的像:

string.replace("/maximum\sof\s\d+/ig", `<${$1++}`)


但是我不能让它作为$ 1仅反向引用整个捕获组,而不是单个数字。我也为字符串格式而苦恼。

最佳答案

您可以使用回调函数和捕获组

maximum\sof\s(\d+)



maximum\sof\s-匹配maximum of
(\d+)-匹配一个或多个数字(捕获组1)




在回调中,我们可以使用捕获的组替换为我们想要的任何附加项



let str = "We have a foobar which can provide a maximum of 20 foo per bar."
let replaced = str.replace(/maximum\sof\s(\d+)/ig, (_, g1) => '<' + (+g1+1))

console.log(replaced)

10-08 02:48