2

我正在尝试更新字符串中的数字

目前我正在使用:

savedJobsDiv.innerHTML = savedJobsDiv.innerHTML.replace(/.*\(|\)/gi, parseInt('$1')+1);

用匹配值 +1 替换一些 () 括号内的 eberythign,但它不太管用,我得到的是 NAN33NAN,33 是正确的数字,或者任何数学结果。

我哪里错了?

所以我的起始字符串是:

random string here (33)

我想 +1 括号内的数字:

random string here (34)
4

2 回答 2

3

$1将没有任何价值,因为您的模式中没有匹配的子组。$1将匹配括号中表示的第一组(您有括号,但它们匹配文字括号 - 它们不是模式的一部分,即匹配子组)。

对于诸如此类的更多计算替换,最好将匹配项提供给回调。

"random string here (33)".replace(/(\()([\d\.]+)(?=\))/g, function($0, $1, $2) {
    //$0 == whole match; $1 == first bracket; $2 == number
    return $1+(parseFloat($2)+1);
}); // == "random string here (34)"

UsingparseFloat允许浮点数和整数,但两者都适用,所以更可取。

于 2013-08-05T11:36:02.473 回答
0
var newstr = "random string here (33)".replace(/\((\d+)\)$/,function(cap0,cap1) {
    return '('+(parseFloat(cap1)+1)+')';
});
//newstr = "random string here (34)"
于 2013-08-05T11:51:58.420 回答