在WYSIWYG编辑器中,我有
<TABLE style="WIDTH: 162pt; BORDER-COLLAPSE: collapse" border=0 cellSpacing=0 cellPadding=0 width=216>
我可以将其转换为
<TABLE style="WIDTH: 162px; BORDER-COLLAPSE: collapse" border=0 cellSpacing=0 cellPadding=0 width=216>
运用
"wysiwygdata".replace(/pt/g,"px");
有没有办法使用正则表达式将pt的关联值更改为px的值.
162pt可能是162 * 96 / 72px.
寻求你的帮助.
解决方法
您可以使用正则表达式,将函数提供给String#replace:
s = /* ...the data... */; s = s.replace(/([0-9]+)pt/g,function(match,group0) { return Math.round(parseInt(group0,10) * 96 / 72) + "px"; });
当你为replace的第二个参数提供一个函数时,它会被调用每个匹配,完整匹配作为第一个参数,然后是后续参数的任何捕获组的值;返回值用作替换值.所以上面我使用捕获组捕获数字,然后进行数学运算并返回新字符串.
您可能需要或想要调整正则表达式以确保它适合您的数据(数字和单位之间可能的空格,可能是i标志,因此它匹配“PT”以及“pt”等),但是这是基本方法.