给定以下字符串
XXXX Units[4].Test XXXX
我想替换每次出现的Unit[x]
with Unit[x+1]
.
我正在尝试使用正则表达式来实现此目的,如名称所示Units
需要首先进行字面匹配。
我正在尝试这样的事情:
test.replace(/(?:Units\[|\_+)(\d+)/g, function(m, i) { return parseInt(m) + 1 })
我的问题是,如果没有积极的回顾,我似乎无法仅匹配数字。我正在尝试以只有数字构成捕获组的一部分的方式构建正则表达式,因此我可以替换它们。
在 C# 中很容易做到,但 javascript 匹配函数的工作方式略有不同。
尽管非捕获规范(?:
the Units[
似乎构成了比赛的一部分。由于javascript不支持后视,我不知道如何完成这个。
您需要对编号之前的部分进行分组,并在稍后的替换中使用该反向引用:
test = test.replace(/(Units\[)(\d+)/ig, function($0, $1, $2) {
return $1 + (parseInt($2)+1); })
//=> XXXX Units[5].Test XXXX
注意使用$1
and $2
在回调函数中,其中$1
代表价值Units[
and $2
是它后面的数字。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)