2017-05-30 125 views
1

嘿,我試圖從字符串中刪除兩個字符和任何空格,看起來像這樣。刪除字符串和空格中的多個字符

var num1 = "34 345 324.34 $" 
var num2 = "$34,345,324.34" 

我基本上要刪除$,和空白

到目前爲止,我有這個

num1.replace(/,|\s/g,""); //34345324.34$ 
num2.replace(/,|\s/g,""); //$34345324.34 

我怎麼也刪除$

謝謝。

+0

'替換(/ [$,\ S] /克, 「」)'' – Thomas

+0

.replace(/ [$,\ S] +/g,「」);' – anubhava

+0

只是*保留*數字和小數點不會更強大嗎?例如。 'num2.replace(/ [^ \ d。]/g,'')' –

回答

1

你似乎在處理貨幣字符串。您可以按照您的黑名單方法使用.replace(/[,\s$]+/g,"")刪除所有出現的1+逗號,空格和美元符號。但是,一旦你有英鎊,歐元,日元等貨幣符號,你將不得不更新正則表達式。

使用白名單方法是比較容易,刪除不屬於您的白名單,數字和點的所有字符:

.replace(/[^0-9.]+/g,"") 

regex demo

[^0-9.]+匹配1個或多個除([^...]是與反轉字符範圍/集匹配的否定字符類)數字和點以外的任何字符。

JS演示:

var nums = ["34 345 324.34 $", "$34,345,324.34"]; 
 
var rx = /[^0-9.]+/g; 
 
for (var s of nums) { 
 
    console.log(s, "=>", s.replace(rx, "")); 
 
}

1

對於字符串(或結尾)開始處的空格使用str.trim();,它將從包含它們的字符串的開始和/或結尾去除任何結尾的空格。

0

要刪除所有空間美元,加上美元符號(逃)到你的正則表達式:

/,|\s|\$/g 

或者乾脆

/[,\s\$]/g 

演示:

var num1 = "34 345 324.34 $" 
 
var num2 = "$34,345,324.34" 
 

 
var res1 = num1.replace(/[,\s\$]/g,""); //34345324.34 
 
var res2 = num2.replace(/[,\s\$]/g,""); //34345324.34 
 

 
console.log(res1) 
 
console.log(res2)