.replace匹配模式+1(整数)

时间:2013-08-05 11:29:04

标签: javascript replace

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

目前我正在使用:

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

在匹配值为+1的某些()括号内重新标记eberythign,但它不起作用,我得到的是NAN33NAN,其中33是正确的数字,或者无论数学算法是什么。

我哪里错了?

所以我的开始字符串是:

random string here (33)

我希望+1到括号内的数字:

random string here (34)

2 个答案:

答案 0 :(得分: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)"

使用parseFloat允许使用浮点数和整数,但是两者都适用,所以最好。

答案 1 :(得分:0)

var newstr = "random string here (33)".replace(/\((\d+)\)$/,function(cap0,cap1) {
    return '('+(parseFloat(cap1)+1)+')';
});
//newstr = "random string here (34)"