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

时间:2012-02-14 15:26:18

标签: javascript regex pattern-matching recipe

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

以下是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>

任何人都可以请我指出如何转换“$&amp;”的正确方向到浮动所以我可以倍增它?

非常感谢!

1 个答案:

答案 0 :(得分:7)

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

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

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

"" * 2 // NaN