5

我正在尝试使用正则表达式替换将配方中的数量相乘。

这是示例 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>

谁能指出我如何将“$&”转换为浮点数的正确方向,以便我可以乘以它?

非常感谢!

4

1 回答 1

8

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

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

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

"" * 2 // NaN
于 2012-02-14T15:31:48.193 回答