日期:2014-05-16  浏览次数:20358 次

求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})?)$/;

你再试试