有限货币正则表达式

时间:2013-03-26 15:37:59

标签: java regex currency

我找到了很多很好的货币正则表达式,非常接近我需要的东西。唉,我不是正则表达的大师,似乎无法编辑我当前的正则表达式来满足要求。

我需要将有效输入限制为'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并未将其与我尝试的任何字符串一起传递,但我将通过我的应用并手动测试。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

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

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

之后有2个数字
^\d{1,3}(,?\d{3})?(\.\d{2})?$