使用JS RegEx添加到字符串(作为数字)

时间:2015-03-10 18:09:59

标签: javascript regex math

是否可以使用regex / replace将(+1)添加到(substring)?例如,如果我有一个以#img-{digit}结尾的字符串(在本例中为窗口位置),是否可以使用正则表达式将数字替换为+1的数字?

我可以像这样匹配哈希,但我不确定如何提取数字(可以超过2位数!例如12)。

var loc = window.location,
    locstr = loc.match(/#img-\d+/),
    // untested:
    locrep = locstr.replace(/\d/, Number($1) + 1);

让我们说我当前的哈希是#img-4,然后我想要一个JS片段,将其更改为#img-5

3 个答案:

答案 0 :(得分:2)

使用callback in replace

var locrep = locstr.replace(/\d+/, function($0) { return Number($0) + 1; });
//=> #img-5

否则:

var locrep = locstr.replace(/(#img-)(\d+)/i, 
                           function($0, $1, $2) { return $1 + (Number($2) + 1); });
//=> #img-5

答案 1 :(得分:0)

由于你有像#img- {digit}之类的字符串,你可以使用split - 就像这样

var loc = window.location,
    locstr = loc.split("-");
    var newloc = locstr[0]+parseInt(locstr[1])+1;

答案 2 :(得分:0)

注意,window.location会返回window.location object;例如,

console.log(typeof window.location, typeof window.location.hash);

尝试

var loc = window.location.hash
, locrep = loc.match(/[^\d]/g).join("") + (1+Number(loc.match(/\d/g).join("")));