我有一个包含带文字货币的字符串。我应该以浮动格式获得货币。
转换应如何运作的示例
Cash € 1,00 => 1.00
Cash € 10,00 => 10.00
Cash $ 10.00 => 10.00
Maestro € 1,0000 => 1.0000
Visa € 1.000,00 => 1000.00
Cash € 1.000.000,00 => 1000000.00
Cash $ 1,000,000.00 => 1000000.00
现在我分2步完成。第一个表达式仅过滤掉0-9
.
和,
var regex = /(\d|\.|,)/g
value = value.match(regex).join('');
我正在努力学习第二个正则表达式
var regex2 = /(\.|,)(?=.*(\.|,))/g;
这个匹配除了最后一个之外的每个点或逗号。
如何使用第二个正则表达式进行逆向?因此,不是匹配.
和,
,而是匹配其他所有内容。
答案 0 :(得分:0)
好吧,我对它采取了略微不同的方法。
我认为评论中有些人误解了我,我收到的字符串可以用美国符号或欧洲符号书写。例如:
American: 1,345.20 = European 1.345,20
,
和.
可以用作千位分隔符或小数点分隔符
我接受所有数字组,然后加入它们,除了最后一个。然后我在它们之间放了一个点,并将最后一个添加到我的浮动中。
var regex = /([0-9]+)/g;
var arrValues = value.match(regex);
if(arrValues.length == 1) value.push(0);
var newValue = parseFloat(_.initial(arrValues).join('') + '.' + _.last(arrValues));
if语句是为了防止没有,
或.
的号码转换为0.value
,如10 => 0.10
旁注:我使用lodash来做一些事情。