Javascript 将正则表达式匹配项相乘并替换为字符串

Javascript 将正则表达式匹配项相乘并替换为字符串,javascript,regex,pattern-matching,recipe,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&g

我试图用正则表达式替换来增加配方中的数量

下面是示例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>
但这是我得到的结果:

<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

出于好奇,把2个香蕉乘以1杯草莓,你希望得到什么?两杯香蕉?伊戈尔我相信他是想把配方翻一番(把所有的值乘以一个常数),而不是把不同的量乘以。没错,我试图通过知道菜谱最初的服务量和给用户提供一个附加值的组合框来动态地增加配方的服务。你不应该考虑这种解决方案。避免使用DOM进行数据存储,而是将其视为表示层。您可以创建一个类似于
var components=[{'name':banana,sliced','qty':2},…]
的对象,并向该对象添加方法以执行各种处理(例如,添加一个负责更新数量的方法并执行某些名词的复数化)。接下来,您可以使用任何JS框架(如redux+react)在页面中表示此对象。
"" * 2 // NaN