gpt4 book ai didi

javascript - RegEx 只找到第一个值

转载 作者:行者123 更新时间:2023-11-30 17:56:39 24 4
gpt4 key购买 nike

所以我正在制作一个 em 到 px 转换器,当您将 css 粘贴到“px”文本区域时,它会将每个 px 值转换为 em。如果您输入“padding: 10px;”之类的内容,它就会起作用。然后转换,但是如果你输入“padding: 10px 0 40px 0;”它只会将“10px”更改为“10em”。我希望它能转换所有这些,而不仅仅是停在第一个。有什么想法吗?

这是 jsFiddle::http://jsfiddle.net/CJamj/

        function pxToEm(){
var px = document.getElementById("px"),
em = document.getElementById("em"),
parent = document.getElementById("parent-font-size");

var pxVal = px.value.match(/\d+/g);
var pxToEm = 1 / parent.value * pxVal;
var pxToEmFixed = pxToEm.toFixed(3);
var pxToEmAnswer = px.value.replace(pxVal, pxToEmFixed).replace("px", "em");

em.value = pxToEmAnswer;
}

最佳答案

Javascript replace() 方法在第一个字符串中搜索指定值并返回替换指定值的新字符串。 javascript 中不存在这样的方法 replaceAll() 。因此,要实现这一点,我们必须使用正则表达式在字符串中进行搜索。

最简单的方法是,使用带有“g”标志的正则表达式来替换所有实例:

试试这个:

px.value.replace(pxVal, pxToEmFixed).replace(/px/g, "em")

将 px 转换为 em:

function pxToEm(){
var px = document.getElementById("px"),
em = document.getElementById("em"),
parent = document.getElementById("parent-font-size");

var pxVal = px.value.match(/\d+px/g).toString().split(',');
var lengthValue = pxVal.length;

var pxToEmAnswer;
for(var i = 0; i < lengthValue; i++)
{
var valueToBeReplced = pxVal[i].replace(/px/g, "");;
var valueToBeReplcedExp = new RegExp(valueToBeReplced, "ig");
pxToEmAnswer = px.value.replace(valueToBeReplcedExp, (1/parseInt(parent.value) * valueToBeReplced).toFixed(3));
}
em.value = pxToEmAnswer.replace(/px/g, "em");
}

Fiddle

关于javascript - RegEx 只找到第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17938822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com