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

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

这是示例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
上一篇:【Teradata SQL】float double decimal和Decfloat区别


下一篇:属性观察者willSet与didSet