剥离货币符号

时间:2017-03-13 18:04:43

标签: node.js regex currency

$ 12,345,6012 540 420 $ ..给定货币符号的货币字符串可能在乞讨或结尾处,我想剥去货币符号。

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

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

12 540 420 € -> 12 540 420

12 456 700 -> 12 456 700

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

2 个答案:

答案 0 :(得分:1)

或许这样做......

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

答案 1 :(得分:0)

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

[$\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*$")

并使用以下内容替换它:

'$1$2'

RexEx Demo

Also check this Q7A