问题 货币格式的Javascript正则表达式


我有这个正则表达式 /^\d(\d|\,\d{3}|,\d.+$)*$/ 

使用我的示例数据:

100.00 - Not working :(
1,000.00 - Working
100,000.00 - Working
1,000,000.00 - Working

注意:如果结果是,我需要给出错误 0.00 

有什么想法或建议吗?谢谢。


11217
2018-06-20 04:38


起源

你的输出应该是什么? 100.00...? - Prasath K
嗨Prasath。我正在使用上面的正则表达式为我的项目和用户键入100.00并且不工作。 - Rajnikanth


答案:


您可以使用:

^(?!0\.00)\d{1,3}(,\d{3})*(\.\d\d)?$

看看它是如何工作的 这里

另外,如果你想禁止前导零,那么正则表达式将是:

^(?!0\.00)[1-9]\d{0,2}(,\d{3})*(\.\d\d)?$

14
2018-06-20 04:43



通过regex101.com链接的顶级解决方案将通过 00.7,这对我来说似乎不对 - George Jempty
@GeorgeJempty嗯,我不知道怎么回事,但regex101链接错了。我认为该网站有一些网址已更改。你可以看到正则表达式是不一样的。要解决这个问题。 - Jerry
只有逗号存在时,此解决方案才会通过。例如: 123123.45 将失败。 123.45 将传递。 123,123.45 将传递。 - Matt Wagner
@MattWagner你提到的不是OP的要求 - Jerry
@Jerry这是我在搜索我的解决方案时发现的旧答案,并希望添加到其中,以便发生在其他人身上的其他人也会看到如果应该有的话,它将失败。没有downvote,只是一个评论。 - Matt Wagner


您可以使用:

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

它会检查

100.00 - 是的

1,000.00 - 是的

100,000.00 - 是的

1,000,000.00 - 是的

0.00 - 没有


0
2017-11-20 08:09





符号版本

^([^\d\s]{1,}\s?[+-]?)(\d{1,3})(\,\d{3})*(\.\d{1,})?$

会检查

  • 100 - 没有
  • 1,000.00 - 没有
  • &-100,000.00 - 是的
  • ¥-1,000,000.00 - 是的
  • €1.000 - 是的
  • €100,000,00.7 - 没有
  • 0.00美元 - 是的
  • R $ 1,000.00 - 是的

0
2017-10-31 17:56