Javascript正则表达式和parseInt

Pau*_*ast 10 javascript regex

我有一个JavaScript正则表达式匹配字符串中的数字,我将乘以和替换.

'foo1 bar2.7'.replace(/(\d+\.?\d*)/g, parseInt('$1', 10) * 2);
Run Code Online (Sandbox Code Playgroud)

我希望它返回,'foo2 bar5.4'但它返回'fooNaN barNaN'

我在这做错了什么?

Fel*_*ing 16

parseInt('$1', 10) * 2先执行,结果传递给replace.您想使用回调函数:

'foo1 bar2.7'.replace(/(\d+\.?\d*)/g, function(match, number) {
    return +number * 2;
});
Run Code Online (Sandbox Code Playgroud)

此外,parseInt将向下舍入任何浮点值,结果将是"foo2 bar4".相反,您可以使用一元加运算符将任何数字字符串转换为数字.