使用javascript正则表达式替换和增加整数值

时间:2016-03-21 15:07:39

标签: javascript regex

给出以下字符串

XXXX Units[4].Test XXXX

我想用Unit[x]替换Unit[x+1]的每一次出现 我正在尝试使用正则表达式实现此目的,因为名称Units需要首先按字面匹配。

我正在尝试这样的事情:

test.replace(/(?:Units\[|\_+)(\d+)/g, function(m, i) { return parseInt(m) + 1 })

我的问题是,如果没有积极的外观,我似乎无法只匹配数字。我试图以这样的方式构建正则表达式,即只有数字形成捕获组的一部分,因此我可以替换它们。

在c#中很容易做到,但javascript匹配功能的工作方式略有不同。

尽管(?:的非捕获规范,Units[似乎构成了匹配的一部分。由于javascript不支持后面的内容,我不知道如何完成此操作。

1 个答案:

答案 0 :(得分:3)

您需要在编号之前对零件进行分组,并在以后使用该反向参考:

test = test.replace(/(Units\[)(\d+)/ig, function($0, $1, $2) {
      return $1 + (parseInt($2)+1); })

//=> XXXX Units[5].Test XXXX

请注意在回调函数中使用$1$2,其中$1代表值Units[$2是后面的数字。