使用正则表达式对文本中的数字进行计算
do calculation on numbers in text using regex
我有一个包含多个段落的 html 文件,每个段落都有一个位于 px
中的顶部和左侧标签。我正在尝试使用正则表达式将此数字转换为百分比。我的页面宽度和高度分别是 500px
和 1000px
。例如这个文本:
<p "position:absolute;left:200px;top:200px"></p>
我想要的结果是:
<p "position:absolute;left:40%;top:20%"></p>
您可以通过正则表达式捕获模式,但无法通过它们进行计算。
在你的情况下,你可以使用像
这样的正则表达式
<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);
我有一个包含多个段落的 html 文件,每个段落都有一个位于 px
中的顶部和左侧标签。我正在尝试使用正则表达式将此数字转换为百分比。我的页面宽度和高度分别是 500px
和 1000px
。例如这个文本:
<p "position:absolute;left:200px;top:200px"></p>
我想要的结果是:
<p "position:absolute;left:40%;top:20%"></p>
您可以通过正则表达式捕获模式,但无法通过它们进行计算。
在你的情况下,你可以使用像
这样的正则表达式<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);