簡體   English   中英

在某些情況下替換字符串失敗

[英]Replace a string fails in some cases

我必須檢查一個字符串並替換其中的一些內容。

我要檢查一下

$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,在所有其他情況下,該函數不應執行任何操作。

是否可以創建這種功能,以及替換代碼必須如何?

非常感謝。

UPDATE

根據我想要改變的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 
->: 

在正則表達式的末尾添加$ (字符串末尾的錨),以確保僅當字符出現在末尾時才匹配,並在這些字符前捕獲一個數字,以便可以替換為僅此數字(從而去除多余的字符):

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM