我正在使用普通的 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})?$
唯一不匹配的是你的倒数第三个例子,它在点之前有一个空格。这有效吗?
编辑:
我的第一个解决方案有一个限制,它会接受以 0 开头的数字,比如 001。这个解决方案使用负前瞻来避免这种情况:
^\$?(?!0\d)(?:\d+|\d{1,3}(?:,\d{1,3})*)(?:\.\d{2})?$
没有前瞻的解决方案
^\$?(?:0|[1-9]\d*|[1-9]\d{0,2}(?:,\d{1,3})*)(?:\.\d{2})?$
查看Regexr
关于javascript - 允许使用 JavaScript 正则表达式将金额输入到输入中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9415780/