我正在尝试使用正则表达式替换来增加配方中的金额.
这是示例HTML代码
<div id="ingredients">
<ul>
<li>2 bananas, sliced</li>
<li>1 cup frozen strawberries</li>
<li>8 oz. low fat vanilla yogurt</li>
</ul>
</div>
我到了这里.我试图找到一种方法来匹配匹配的数字,然后用乘以的数字替换旧的数字:
var str = document.getElementById('ingredients').innerHTML;
var regex = /[0-9]+(?:\.[0-9]*)?/g;
str = str.replace(regex, "$&" * 2);
console.log(str)
但这是我得到的输出:
<ul>
<li>NaN bananas, sliced</li>
<li>NaN cup frozen strawberries</li>
<li>NaN oz. low fat vanilla yogurt</li>
</ul>
任何人都可以指出我如何转换“$&”的正确方向到浮动所以我可以倍增它?
非常感谢!
解决方法:
您必须先将字符串解析为数字,然后才能将其相乘:
str = str.replace(/[0-9]+(?:\.[0-9]*)?/g, function(m) { return 2*parseFloat(m)+''; });
你不能在javascript中乘以字符串!
"" * 2 // NaN