![](/img/trans.png)
[英]String.replace() not Replacing Newlines (or Anything, for that matter)
[英]String.replace regex is not replacing `*` in string
我有一個字符串輸入,正在運行string.replace
,它沒有從字符串中刪除*
字符,但正在刪除|
字符。
var s = "|*55.6"; s = s.replace(/[^0-9.]/, ""); console.log(s);
您尚未為正則表達式使用全局標志 ,這就是為什么替換第一次出現而不是操作結束的原因。
var s = "|*55.6"; s = s.replace(/[^\\d.]/g, ""); console.log(s);
如果單獨出現[^\\d.]
,單獨使用+
量詞將無濟於事,盡管與g
標志一起使用會更好。 例如;
var s = "|*55.6a" s = s.replace(/[^0-9.]+/, "") console.log(s) //=> "55.6a not OK
這是因為replace只執行一次。 使用g
選項替換每個匹配項。
s = s.replace(/[^0-9.]/g, "");
您缺少+
尋找一個或多個事件:
var s = "|*55.6"; s = s.replace(/[^0-9.]+/, ""); console.log(s);
另外,如果您有興趣取出數字,則可以使用.match()
方法:
var s = "|*55.6"; s = s.match(/[(0-9.)]+/g)[0]; console.log(s);
替換字符串時,需要使用全局( g
)標志/修飾符或加號( +
)量 ;
var s = "|*55.6"; s = s.replace(/[^0-9.]/g, ""); console.log(s);
var s = "|*55.6"; s = s.replace(/[^0-9.]+/, ""); console.log(s);
一些答案提到了Quantifiers +
,但它仍只會替換第一個匹配項:
console.log("|*45.6abc".replace(/[^0-9.]+/, ""))
如果您需要刪除所有非數字字符( .
除外),則仍然需要修飾符/標志g
console.log("|*45.6,34d".replace(/[^0-9.]+/g, ""));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.