[英]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.