我有一个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".相反,您可以使用一元加运算符将任何数字字符串转换为数字.