2016-10-04 8 views
0

かなりまっすぐな質問:JSのregexで一致するグループに対して算術演算を実行する方法はありますか?regexグループの算術演算javascript

例:私は、文字列を持っている:

<img style="top:200"> 

私はこのケースでは40だろうこれ、5で割って200または任意の番号を交換したいです。だから、出力:

var d= c.replace(/top:([-]?\d*[\.]?\d*)/,'int:'+parseInt($1/5)+'px') 

をしかし、私はあなたがString#replace方法でコールバック関数を使用することができます

<img style="top:NaNpx"> 
+2

なぜあなたはHTMLとCSSを解析するために正規表現を使うのでしょうか? – adeneo

+0

この場合、あまりにも多くの問題を提示すべきではない明確なテキストです。彼はHTML構文ツリー全体を解析しようとしているようではありません。 –

+0

メソッドを置き換えてコールバックを使用する 'var c = ''; VAR D = c.replace(/ TOP:?([ - ] \ D * [\] \ D *)/関数(M、M1){ リターン '上部' + M1/5 + ' px '; }); '.....しかし、htmlを解析するためにregexを使うのは悪い考えです。 –

答えて

2

を得る:

<img style="top:40"> 

私が試してみました。

var c = '<img style="top:40">'; 
 

 
var d = c.replace(/top:([-]?\d*[\.]?\d*)/, function(m, m1) { 
 
    return 'top:' + m1/5 + 'px'; 
 
}); 
 

 
console.log(d);


FYI:しかし、それはHTMLを解析するために正規表現を使用することが悪い考えです。唯一の代わりに文字列全体に適用するスタイル属性値のために置き換える方法を適用するDOMParser


別の方法 。

var c = '<img style="top:200">'; 
 

 
var parser = new DOMParser(); 
 

 
var img = parser.parseFromString(c, "text/html") 
 
    .querySelector('img'); 
 

 
img.setAttribute('style', img.getAttribute('style').replace(/\btop:([-]?\d*(\.\d+)?)/, function(m, m1) { 
 
    return 'top:' + m1/5 + 'px'; 
 
})) 
 

 

 
console.log(img.outerHTML)

+0

5秒で私にそれを打ちなさい:P –

+0

@pranav Ikしかし、私はレガシーコードベースに取り組んでいて、それは非常に具体的です...私はこれを励ましていません。しかし、私の特定のシナリオでは、方法!!! –