我正在使用普通的JavaScript,需要一些我的正则表达式的帮助。必须允许使用以下格式的货币,并且仅以这些格式(对于允许的美元金额的数量(数十,数百,数千等)没有限制):
var regex = /^\$?.?[1-9][0-9,]*(.[0-9]{0,2})?$/;
目前,它不允许输入0.99等金额。
答案 0 :(得分:2)
试试这个
^\$?(?:\d+|\d{1,3}(?:,\d{1,3})*)(?:\.\d{2})?$
唯一不匹配的是你的第三个例子,它在点之前有一个空格。这有效吗?
修改强>
我的frist解决方案有限制,它接受从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})?$
上查看
答案 1 :(得分:0)
^\$?(?:[1-9]\d?\d?(?:(?:,\d{3})*|(?:\d{3})*)|0)(?:\.\d\d?)?$
虽然我不会使用这种严格的输入限制。