剥离货币符号

Strip currency symbol

$ 12,345,60, 12 540 420 $..给定带有货币符号的货币字符串,可以在开头或结尾,我想去掉货币符号。

对于上面的例子,输出应该是..注意货币符号并不总是美元。它可以是任何符号。

$ 12,345,60 -> 12,345,60

12 540 420 € -> 12 540 420

12 456 700 -> 12 456 700

最简单的方法当然是检查第一个或最后一个字符是否为数字,否则将其删除。我想知道是否可以使用正则表达式或任何其他更好的方法来完成此操作。

要在没有任何外部库的情况下匹配 Javascript 中的任何货币符号,请使用此字符 class:

[$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6]

您可以使用此正则表达式进行搜索:

var currRE = /[$\xA2-\xA5\u058F\u060B\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BD\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6]/;

var re = new RegExp("^\s*" + currRE.source + "\s*(\d)|(\d)\s*" + 
         currRE.source + "\s*$")

并将其替换为:

''

RexEx Demo

Also check this Q7A

或许可以这样做...

let str = ['$ 12,345,60', '12 540 420 €', '12 456 700'];
str.forEach(e => {
  console.log(e.match(/\b[\d, ]+\b/g)[0]);
});