gpt4 book ai didi

javascript - 在某些情况下替换字符串会失败

转载 作者:行者123 更新时间:2023-11-28 17:11:22 26 4
gpt4 key购买 nike

我必须检查一个字符串并替换其中的一些内容。

我必须检查是否

$mystring='abc...';

具有以下值之一 px,em,%,vh,s

我用它来检查字符串

function replaceUnit(input){ return input.replace(/(px|em|%|vh|s)/i ,'') }

它可以工作,但在某些情况下会产生错误。

例如,如果我的字符串中有

$mystring="its embeded"

该函数将替换“s”和“em”,这不是它应该的样子。

该函数应该检查 mystring 中是否为

only a number+px
or only a number+em
or only a number+%
or only a number+vh
or only a number+s

如果存在匹配,该函数应替换文本部分,在所有其他情况下,该函数不应执行任何操作。

是否可以创建一种此类函数以及替换代码必须如何?

非常感谢。

更新

基于我试图改变它的答案之一

var input="0s";
function replaceUnit(input)
{
console.log('check: '+input);
var test=input.replace(/(\d)(?:px|em|%|vh|s)$/i ,'');
console.log('->: '+test);
return test
}

控制台的结果是

check: 0s 
->:

最佳答案

在正则表达式的末尾添加一个$(字符串结尾 anchor ),以确保仅当字符出现在最末尾时才匹配,并捕获一个数字在这些字符之前,以便您可以单独替换该数字(从而删除多余的字符):

return input.replace(/(\d)(?:px|em|%|vh|s)$/i ,'$1')

https://regex101.com/r/IodB6z/1

关于javascript - 在某些情况下替换字符串会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54305031/

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