使用正则表达式对文本中的数字进行计算

时间:2019-01-13 06:19:52

标签: javascript regex string replace eval

我有一个包含多个段落的html文件,每个段落都有px中的顶部和左侧标签。我正在尝试使用正则表达式将此数字转换为百分比。我的页面宽度和高度分别为500px1000px。例如,此文本:

<p "position:absolute;left:200px;top:200px"></p>

我希望结果是:

<p "position:absolute;left:40%;top:20%"></p>

1 个答案:

答案 0 :(得分:0)

您可以通过正则表达式捕获模式,但无法通过它们完成计算。

在您的情况下,您可以使用正则表达式,例如

<p.*left:(\d{1,3})px;top:(\d{1,3}).*p>

此正则表达式将吐出2个匹配项,将其捕获。您现在可以转换它们,并使用捕获的组号替换它们。

或者您可以简单地使用回调来替换方法

str = '<p "position:absolute;left:200px;top:200px"></p>';
pattern = /\d+/g;
function replacer(match) {
	match = (match/500)*100 + '%';
  return match;
}
str = str.replace(pattern, replacer);
str = str.replace(/px/g, '');
console.log(str);