目前我的ID是这样的:
s2id_past_example_lashing_guidances_41_commodity_id
现在,我想将短语guidances_
后面的数字替换为自身+1。在这种情况下,我想要s2id_past_example_lashing_guidances_41_commodity_id
- > s2id_past_example_lashing_guidances_42_commodity_id
我在regex101.com上试过了(s2\w*_)(\d+)(\w*_id)
,我被困在这里了。任何帮助,将不胜感激。提前谢谢。
答案 0 :(得分:3)
如果您不想使用任何群组,只匹配正确的ID:
\d+(?=_[A-Za-z]+_id$)
这是example。它使用正向前瞻,以便只找到_someword_id
之前的数字。
它更容易替换:
var str = "s2id_past_example_lashing_guidances_41_commodity_id";
var new_str = str.replace(/\d+(?=_[A-Za-z]+_id$)/, function($0) {
return Number($0)+1;
});
console.log(new_str);

答案 1 :(得分:2)
由于正在使用正则表达式,所以代码中唯一必要的部分是回调方法:
var s = "s2id_past_example_lashing_guidances_41_commodity_id";
var res = s.replace(/(s2\w*_)(\d+)(\w*_id)/, function($0,$1,$2,$3) {
return $1+(Number($2)+1)+$3;
});
console.log(res);

您要增加的数字在第2组中,因此$2
会转换为数字并递增。
答案 2 :(得分:1)
对String.replace
函数使用以下方法:
var id_value = 's2id_past_example_lashing_guidances_41_commodity_id',
replaced = id_value.replace(/(guidances_)(\d+)(?=_)/g, function ($m0, $m1, $m2) {
return $m1 + (parseInt($m2) + 1);
});
console.log(replaced);