【问题标题】:Strip currency symbol剥离货币符号
【发布时间】:2017-03-13 18:04:42
【问题描述】:

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

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

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

12 540 420 € -> 12 540 420

12 456 700 -> 12 456 700

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

【问题讨论】:

    标签: node.js regex currency


    【解决方案1】:

    或许可以这样做……

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

    【讨论】:

    • 对不起..我更新了货币符号可以是任何符号而不是美元的问题
    • 感谢您的回答.. 我需要更通用的解决方案,因为货币符号可以是任何符号,我想避免在 [] 子句中列出所有可能的符号..
    【解决方案2】:

    要在没有任何外部库的情况下匹配 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

    【讨论】:

    • 对不起..我更新了货币符号可以是任何符号而不是美元的问题
    猜你喜欢
    • 2019-02-23
    • 2017-06-22
    • 2017-06-13
    • 2012-08-12
    • 1970-01-01
    • 2012-09-04
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多