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

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

你再试试