用正则表达式替换id号

时间:2016-11-28 13:42:41

标签: javascript regex

目前我的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),我被困在这里了。任何帮助,将不胜感激。提前谢谢。

3 个答案:

答案 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);