求JS带符号金额验证方法
//金额验证
function checknumber(obj) {
var re = /^([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/;
var str = obj.value;
if (str != "") {
if (re.test(obj.value) == false) {
obj.value = str;
alert("格式不正确,请输入有效的金额!");
obj.value = "";
obj.focus();
}
}
}
这样写只能验证这种方式的金额,1000.00 例如验证这种中间带逗号的就不行了,1000,0000.00,求高手指点,谢谢!
------解决方案--------------------在处理之前最好把数字处理一下,不要什么都靠正则
obj.replace(',','');
把逗号用空字符串替换掉。
------解决方案--------------------这么写:/^-?\d{1,3}((,\d{4})|\d)*(.\d{1,2})?$/
------解决方案--------------------var re = /^([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/;
(\,[0-9]{3})这个是匹配逗号的关键 你想匹配4位1隔的话 就把{3}改成{4}就行了 如果想3位4位都支持的话就((\,[0-9]{3})|(\,[0-9]{4}))也行.随你怎么搞吧
------解决方案--------------------
晕 你前面是1000....
var re = /^([1-9]{1}[0-9]{0,3}(\,[0-9]{3,4})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/;
你再试试