我必须检查一个字符串并替换其中的一些内容。
我必须检查
$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
如果存在匹配项,则该函数应替换textpart,在所有其他情况下,该函数不应执行任何操作。
是否可以创建这种功能,以及替换代码的样式如何?
非常感谢。
更新
基于我尝试更改的answears
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
->:
答案 0 :(得分:3)
在正则表达式的末尾添加一个$
(字符串末尾的锚),以确保仅当字符出现在末尾时才匹配,并在这些字符之前捕获一个数字,这样您就可以单独替换为该数字(从而删除多余的字符):
return input.replace(/(\d)(?:px|em|%|vh|s)$/i ,'$1')