我使用的是普通的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/