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


$ 25,000
$ 25000
25,000
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
.75



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


目前,它不允许输入0.99之类的金额。

最佳答案

尝试这个

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


看到here on Regexr

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

编辑:

我的第一个解决方案有一个限制,那就是它接受以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上查看

关于javascript - 允许使用JavaScript正则表达式将金额输入到输入中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9415780/

10-13 07:54