2009-10-25 79 views

回答

5

你可以從任意的字符串挑出來的數字與正則表達式:

var match= string.match(/[0-9,.]*/); 
if (match!==null) { 
    var amount= parseFloat(match[0].replace(/,/g, '')); // replace , thousands separator 
} 

但是!由於浮點計算的不準確性,將貨幣金額存儲在浮點類型中通常是不允許的。當然JavaScript 只有爲您提供浮點數,但通過堅持整數(例如美分),您可以獲得精確的計算,達到單位數。

最好的處理錢是使用十進制算術類型。這不是JavaScript中的內置類型,但是這裏是它的an implementation。 (不幸的是,它很重量級......我正在考慮簡單地實現僅僅需要基本算術的瑣碎基礎知識。)

我也很想知道來代替字母字符說「*」再次

正則表達式:

string.replace(/[A-Z]/gi, '*') 

(爲ASCII內的「字母」的價值觀如果你需要非ASCII Unicode字母來代替你。必須構建更多涉及的角色之三類... JavaScript沒有內置類爲整個Unicode字符集的元數據。)

+0

感謝您的好評。我發現我想要一個稍微不同的正則表達式:string.match(/ [0-9,。] +/g) – 2011-01-03 21:01:20

1

使用JavaScript substring()方法去掉字母,然後用解析parseFloat

parseFloat('1,000.20') 

parseFloat('1,000.20') 
+0

似乎不起作用100%正確。如果在Chrome中執行'parseFloat('1,000.20')',我會得到'1'結果 – crashbus 2017-07-28 07:52:03

1

這可能是工作:

floatstring=currencystring.replace(/\$/,""); 
floatstring=floatstring.replace(/USD/,""); 
floatstring=floatstring.replace(/,/,""); 
floatstring=floatstring*1; 
+0

+1替換函數 – Xinus 2009-10-25 11:07:58

4

刪除所有非數字符號:

dirty_string.replace (/[^\d.]/g,'')

0

這將刪除所有字符

 var value = string.replace(',', ''); 
     value = value.replace(/[^0-9,.]*/, ''); 
     value = parseFloat(value); 
2

很久以前我做了一個正則表達式來處理各種貨幣...

([+-]?[0-9|^.|^,]+)[\.|,]([0-9]+)$ 

看它的結果

enter image description here

,那麼你只需要得到小數部分,刪除所有 「」和 「」 和如果存在與小數部分CONCAT

最終結果變成:

let currency = "R$ -123.324,123,323" 
let regex = /([+-]?[0-9|^.|^,]+)[\.|,]([0-9]+)$/igm 
let result = regex.exec(currency); 
console.log("Regex result: " + result); 
let floatResult = result? result[1].replace(/[.,]/g, "")+ "." + result[2] : currency.replace(/[^0-9-+]/g, ""); 
console.log("Final result: " + floatResult); 

Codepen:https://codepen.io/nicollaas94/pen/zdOevo?editors=0011