乘以正则表达式匹配并将其替换为字符串

Ric*_*oli 4 javascript regex recipe pattern-matching

我正在尝试使用正则表达式替换来增加配方中的金额.

这是示例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>
Run Code Online (Sandbox Code Playgroud)

我到了这里.我试图找到一种方法来匹配匹配的数字,然后用乘以的数字替换旧的数字:

var str   = document.getElementById('ingredients').innerHTML;
var regex = /[0-9]+(?:\.[0-9]*)?/g;
str = str.replace(regex, "$&" * 2);
console.log(str)?
Run Code Online (Sandbox Code Playgroud)

但这是我得到的输出:

<ul>
    <li>NaN bananas, sliced</li>
    <li>NaN cup frozen strawberries</li>
    <li>NaN oz. low fat vanilla yogurt</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

任何人都可以指出我如何将"$&"转换为浮点数的正确方向,以便我可以倍增它?

非常感谢!

sin*_*rix 7

您必须先将字符串解析为数字,然后才能将其相乘:

str = str.replace(/[0-9]+(?:\.[0-9]*)?/g, function(m) { return 2*parseFloat(m)+''; });
Run Code Online (Sandbox Code Playgroud)

你不能在javascript中乘以字符串!

"" * 2 // NaN
Run Code Online (Sandbox Code Playgroud)