【问题标题】:Limited currency regex有限货币正则表达式
【发布时间】:2013-03-26 15:37:58
【问题描述】:

我发现了很多很好的货币正则表达式,它们非常接近我的需要。唉,我不是正则表达式专家,似乎无法编辑我当前的正则表达式以满足要求。

我需要将有效输入限制为“xxx,xxx.xx”的格式。允许的最大金额需要为“999,999.99”,逗号可选。直到现在我一直在使用这个正则表达式:

^([0-9]{1,3}(,[0-9]{3})*|([0-9]+))(.[0-9]{2})?$

除了无法将上限设为“999,999.99”外,它一直运行良好。感谢您的帮助!



更新


我一直在修修补补,我设法想出了这个:

/^(?:([0-9]{3}?,?)?[0-9]{3}(?:\.[0-9]?[0-9]?)?)$/

仍在测试,看看它是否有效。 RegexPlanet 没有通过我尝试的任何字符串传递它,但我将通过我的应用程序并手动测试。

【问题讨论】:

  • 最低金额是多少? 000,000,000,0,00,或者别的什么?
  • @Pshemo 我认为最低金额是0.00,这只是|部分的猜测
  • 最小数量为 0。没有要求将 0 的值格式化为 0.00
  • 前面提到的表格也可以接受吗?
  • 我不明白为什么会这样

标签: java regex currency


【解决方案1】:

burning_LEGION 的回答授权了一些我认为您可能不想要的情况:
- 999,9
- 9.

我假设您希望满足这些条件:
- 如果有逗号,后面有3个数字
- 如果有一个点,后面有2个数字

^\d{1,3}(,?\d{3})?(\.\d{2})?$

【讨论】:

  • 啊啊啊啊是的,非常真实。感谢您接听!
【解决方案2】:

使用这个正则表达式^\d{1,3}(,?\d{1,3}){0,1}(\.\d{0,2})?$

【讨论】:

  • +1 在 Java 中,您需要在 String 中转义 \,因此 OP 需要将 \d 替换为 \\d。
猜你喜欢
  • 2012-11-30
  • 2010-10-23
  • 1970-01-01
  • 1970-01-01
  • 2015-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多