2012-02-14 27 views
4

regex replaceを使用してレシピ内の金額を掛けようとしています。ここで 正規表現を乗算して文字列に置き換えます。

は、私は限りここに来た例の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> 

誰でもポイントしてくださいでき"$ &"を浮動小数点に変換する方法について私に正しい方向に私はそれを掛けることができますか?

多くの感謝!

+0

ちょうど好奇心から、2バナナにイチゴ1カップを掛けて何を得ることが期待されますか? 2カップのバナナベリーの小片? –

+0

@Igor私は彼がレシピを倍増させようとしていると考えています(すべての値に定数を掛けて)。 – Phrogz

+0

正確には、最初に提供されたサービングの数を知り、追加の値でコンボボックスをユーザーに提供することで、レシピのサービングを動的に増やそうとしています。 –

答えて

6

あなたはそれを掛けることができます前に、数として文字列を解析する必要があります:あなたはJavaScriptで文字列を掛けることができません

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

"" * 2 // NaN 
+0

+1ありがとう、それは私が必要なものを正確に行います。 –

関連する問題