允许使用JavaScript Regex将金额输入到输入中

时间:2012-02-23 15:18:28

标签: javascript regex decimal currency

我正在使用普通的JavaScript,需要一些我的正则表达式的帮助。必须允许使用以下格式的货币,并且仅以这些格式(对于允许的美元金额的数量(数十,数百,数千等)没有限制):

  • $ 25,000
  • $二万五
  • 25000
  • 25000
  • 25000.01
  • 25,000.99
  • 2000.99
  • 50.00
  • 50
  • 1.95
  • 1 .99
  • 0.25
  • $ 0.25
  • 0.2
  • 2.3
  • 2000.5
  • 0.75
  

var regex = /^\$?.?[1-9][0-9,]*(.[0-9]{0,2})?$/;

目前,它不允许输入0.99等金额。

2 个答案:

答案 0 :(得分:2)

试试这个

^\$?(?:\d+|\d{1,3}(?:,\d{1,3})*)(?:\.\d{2})?$

here on Regexr

唯一不匹配的是你的第三个例子,它在点之前有一个空格。这有效吗?

修改

我的frist解决方案有限制,它接受从0开始的数字,如001.此解决方案使用负向前瞻来避免这种情况:

^\$?(?!0\d)(?:\d+|\d{1,3}(?:,\d{1,3})*)(?:\.\d{2})?$

here on Regexr

无需预测的解决方案

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

Regexr

上查看

答案 1 :(得分:0)

^\$?(?:[1-9]\d?\d?(?:(?:,\d{3})*|(?:\d{3})*)|0)(?:\.\d\d?)?$

虽然我不会使用这种严格的输入限制。