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

Adding to a string (as numeral) with JS RegEx

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

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

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

假设我当前的哈希值是 #img-4,那么我想要一个 JS 片段将其更改为 #img-5

使用 callback in replace:

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

否则:

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

因为你有像#img-{digit} 这样的字符串,你可以使用 split with - 像这样

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

注意,window.location returns 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("")));