首页 > 解决方案 > 匹配货币格式的任何逗号和点,但不匹配最后一个

问题描述

我想将货币格式转换为十进制,它将作为十进制数据类型存储在数据库中

例子:

12,345.45 to 12345.45
10.000.00 to 10000.00

我已经尝试过这种正则表达式模式/(,|\.)/,但最后一个点(表示美分值)仍然涉及,我对如何排除最后一个点感到困惑

预期结果,排除给定字符串中的最后一个点

标签: phpregexcurrency

解决方案


使用php,您可以preg_replace这样使用:

$repl = preg_replace('/\.(?=\d+\.)|,/', '', $str);

正则表达式演示

正则表达式详细信息:

  • \.: 匹配.
  • (?=\d+\.): 正向前瞻断言我们在 1+ 位之后前面有一个点
  • |: 或者
  • ,: 匹配一个逗号

推荐阅读