簡體   English   中英

使用純JavaScript刪除貨幣符號並用點替換逗號

[英]Removing currency symbol and replacing comma with point using pure javascript

我想使用javascript正則表達式刪除貨幣符號並用點替換數字逗號。 我有這樣的價值;

199,00 kr

我想像199.00

我使用了此腳本,但無法正常工作。

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

使用此工具,我可以刪除貨幣,但它的輸出也為19900

我這樣嘗試

var val2 = val.replace(/,/g, '.')
var val2 = val2.replace(/[^\d]/g, '');

但這又使輸出為19900

請告知我我做錯了。

這種情況下最簡單的正則表達式可以是:

'199,00 kr'.replace(/(\d+),(\d+).*/, '$1.$2')

您可能想按逗號分隔字符串,然后替換每個子字符串,然后按點連接,這樣您就不會在替換期間刪除逗號或點:

 val.split(",").map(str => str.replace(/[^\d]/g, '')).join(".")

您可以在捕獲組中捕獲數字,並將點和空格與kr匹配。 在開頭和結尾使用單詞邊界 \\'b

在替換使用組1中,點,組2: $1.$2

 var val2 = "199,00 kr"; val2 = val2.replace(/\\b(\\d+),(\\d+)\\s*kr\\b/g, '$1.$2'); console.log(val2); 

我會建議:

result = subject.replace(/(\d+),(\d+)[\s\S]*/g, "$1.$2");

此版本掃描文本以查找類似於貨幣的任何內容,並在其上運行替換功能。

對於將來的極端情況,這很容易修改。

 function fixPrices(txt) { return txt .replace(/\\d*\\,*\\d* kr\\b/igm, function(subject) { return subject .replace(",", '.') .replace("kr", '') .trim(); }); } //TEST var txt = "Hej min is koster 199,00 kr, men er det ikke lidt meget?\\nJeg syntes den b\ør koste 20 kr, 20,5 kr eller bare ,5 kr!"; console.log(txt); console.log(fixPrices(txt)); 

更加靈活的替代方法(不處理+/-符號):

 const extractNumber = s => s.replace(/\\D+/g, m => m == ',' ? '.' : ''); console.log( extractNumber('199,00 kr') ) // "199.00" console.log( extractNumber('199 kr') ) // "199" console.log( extractNumber('123.456,00 kr') ) // "123456.00" 

暫無
暫無

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

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