简体   繁体   中英

Replace a string fails in some cases

I must check a string and replace something of them.

I have to check if

$mystring='abc...';

has one of this values px,em,%,vh,s

I use this to check the string

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

It works but produces error in some cases.

If I have in my string for example

$mystring="its embeded"

The function will replace the "s" and "em" that's not the way it should be.

The function should check if in mystring is

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

If there is a match, the function should replace the textpart, in all other cases the function should do nothing.

Is it possible to create a kind of this function and how a replace code must be?

Thanks a lot.

UPDATE

based on one of the answears i trie to change it

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  
}

the result in the console is

check: 0s 
->: 

Add a $ (end-of-string anchor) to the end of the regular expression, to ensure that it'll only match if the characters occur at the very end, and capture a number before those characters, so that you can replace with that number alone (thus stripping out the extra characters):

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

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM