相当直截了当的问题:有没有办法在JS中的regex中对匹配的组执行算术运算。
Ex:我有字符串:
<img style="top:200">
我想用除以5代替200或任何数字,在这种情况下为40。所以输出:
<img style="top:40">
我试过了:
var d= c.replace(/top:([-]?\d*[\.]?\d*)/,'int:'+parseInt($1/5)+'px')
但是我得到了
<img style="top:NaNpx">
答案 0 :(得分:2)
您可以使用String#replace
方法的回调函数。
var c = '<img style="top:40">';
var d = c.replace(/top:([-]?\d*[\.]?\d*)/, function(m, m1) {
return 'top:' + m1 / 5 + 'px';
});
console.log(d);
仅供参考:但使用正则表达式来解析HTML是一个坏主意。
使用DOMParser的另一种方法,仅将替换方法应用于style属性值,而不是应用于整个字符串。
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)