You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求匹配全球货币格式的正则表达式

完善全球银行对账单金额匹配正则表达式

需求说明

需要一个正则表达式匹配全球多种货币金额格式(示例仅作参考,符合规则的任意金额均可匹配),同时满足以下约束:

$ 1.234,56
R$ 1.234,56
1.234,56 $
1.234,56 Kč
kr. 1.234,56
€1.234,56
HK$ 1,234.56
1.234,56 Ft
₹ 1,234.56
₪ 1.234,56
¥ 1,234.56
₩ 1,234.56
RM 1,234.56
$ 1,234.56
kr 1,234.56
₱ 1,234.56
1.234,56 zł
1.234,56 p.
$1,234.56
R 1,234.56
1.234,56 kr
fr. 1.234,56
元 1,234.56
1,234.56 ฿
1,234.56 ₺
£1,234.56
$1,234.56
1.234,56 ₫
$0
$0.00
$ 0,00
$ 0.00
0.00
0,00
1234.00
1234,00
(1,234.00)
$(1,234.00)
($1,234.00)
-$1,234.00
-1234.00
$-1,234.00
234.00 CR
234.00 DR
234.00 WD
234.00 W/D

附加规则

  • CR、DR支持任意大小写混合(如CR、Cr、cR、cr)
  • WD、W/D仅支持全大写或全小写(如WD、wd、W/D、w/d)
  • 排除纯独立数字(如4、45、456);无货币符号的数字必须带有小数部分或千位分隔(如234.00、234,00)

现有正则问题

原正则无法处理负数括号格式、大小写混合的货币代码、后缀标识规则,且无法有效排除纯独立数字:

^(?:[$€£₹¥฿₽₺₴₸₣₱₩₮₡₢₣₲₳₵₪₺﷼]|(?:[A-Z]{2,3}\s?\.?\s?))?\s?\d{1,3}(?:[.,]\d{3})*(?:[.,]\d{2})?\s?(?:[$€£₹¥฿₽₺₴₸₣₱₩₮₡₢₣₲₳₵₪₺﷼]|(?:[A-Z]{2,3}\s?\.?\s?))?$

完善后的正则表达式

^(?<!\S)(?:(?:[$€£₹¥฿₽₺₴₸₣₱₩₮₡₢₣₲₳₵₪₫₺元₿﷼]|(?:[A-Za-z]{1,3}(?:\s?\.)?\s?)))?(?:-|(?=\())?(?:\((?:[$€£₹¥฿₽₺₴₸₣₱₩₮₡₢₣₲₳₵₪₫₺元₿﷼]?)?|[$€£₹¥฿₽₺₴₸₣₱₩₮₡₢₣₲₳₵₪₫₺元₿﷼]?-?)?(?:\d{1,3}(?:[.,]\d{3})*|0)(?:[.,]\d{2})?(?:\))?(?:\s?(?:(?:[Cc][Rr]|[Dd][Rr])|(?:[Ww][Dd]|[Ww]\/[Dd])))?\s?(?:(?:[$€£₹¥฿₽₺₴₸₣₱₩₮₡₢₣₲₳₵₪₫₺元₿﷼]|(?:[A-Za-z]{1,3}(?:\s?\.)?)))?(?!\S)$

关键改进点

  1. 边界控制:(?<!\S) 和 (?!\S) 确保金额为独立单元,避免与其他文本粘连误匹配
  2. 负数格式支持:兼容 - 前缀、括号包裹的多种负数写法(如$(123.00)、($123.00))
  3. 货币符号与代码优化:
    • 补充了₫、元等遗漏符号
    • 支持大小写混合的货币代码(如Kč、zł)和带点的代码格式(如kr.、fr.)
  4. 数字格式验证:
    • 允许纯零(如$0),但排除非零纯整数(如4、456),强制要求小数部分或千位分隔
  5. 后缀标识处理:
    • CR/DR用[Cc][Rr]|[Dd][Rr]支持任意大小写混合
    • WD/W/D用[Ww][Dd]|[Ww]\/[Dd]严格限制全大/全小写

内容的提问来源于stack exchange,提问作者kittonian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 18:53:16