我想使用javascript正则表达式删除货币符号并用点替换数字逗号。 我有这样的价值;
199,00 kr
我想让它像 199.00
我使用了此脚本,但无法正常工作。
val.replace(/[^\d]/g, '');
使用此功能,我可以删除货币,但也会使输出为 19900
我尝试过这种方式
var val2 = val.replace(/,/g, '.')
var val2 = val2.replace(/[^\d]/g, '');
但是它再次使输出为19900
请告知我我做错了。
答案 0 :(得分:1)
这种情况下最简单的正则表达式可以是:
'199,00 kr'.replace(/(\d+),(\d+).*/, '$1.$2')
答案 1 :(得分:0)
您可能想按逗号分隔字符串,然后替换每个子字符串,然后按点连接,这样您就不会在替换期间删除逗号或点:
val.split(",").map(str => str.replace(/[^\d]/g, '')).join(".")
答案 2 :(得分:0)
您可以在捕获组中捕获数字,并将点和空格与kr
匹配。在开头和结尾使用word boundary \'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);
答案 3 :(得分:0)
我建议:
result = subject.replace(/(\d+),(\d+)[\s\S]*/g, "$1.$2");
答案 4 :(得分:0)
此版本会扫描文本以查找类似于货币的任何内容,并在其上运行替换功能。
这很容易在以后的情况下进行修改。
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\u00F8r koste 20 kr, 20,5 kr eller bare ,5 kr!";
console.log(txt);
console.log(fixPrices(txt));
答案 5 :(得分:0)
更灵活的替代方法(不处理+/-符号):
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"