繁体   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