代码之家  ›  专栏  ›  技术社区  ›  clarkk

regexp-带小数和千位分隔符的货币字符串匹配

  •  -1
  • clarkk  · 技术社区  · 7 年前
    /(?<!\d[- ]|[\d.,])-?[1-9]\d{0,2}(?:(?:[., ]\d{3})*|\d*)(?![\d%]|[- ][\d%])/
    

    主题

    812,30
    48 kdk 1
    54%
    1.393.434 test
    2.392,39
    2,292.39
    

    我不想用小数来匹配任何数量。那么台词呢 812,30 , 2.392,39 2,292.39

    https://regex101.com/r/XPgypx/2

    1 回复  |  直到 7 年前
        1
  •  1
  •   Alexandre Elshobokshy    7 年前

    只需通过添加一个排除它们的负前瞻来排除它们。

    (?!.*,.*\.*) 对于 2,292.39 搜索和 (?!.*\..*,*) 2.392,39 搜索就行了

    (?<!\d[- ]|[\d.,])-?[1-9]\d{0,2}(?:(?:[., ]\d{3})*|\d*)(?![\d%]|[- ][\d%])(?!.*,.*\.*)(?!.*\..*,*)
    

    在这里测试它: https://regex101.com/r/XPgypx/4

    推荐文章