<script>
 function formatNumber(eValue){
   
   var intPart = '';
   var decPart = '';
   
   if (eValue.indexOf(',') >= 0){
     eValue=eValue.replace(/,/g,'');
   }
   //判断是否包含'.'
   if (eValue.indexOf('.')>=0){
     intPart = eValue.split('.')[0];
     decPart = eValue.split('.')[1];
   }else{
     intPart = eValue;
   }
    var num  =  intPart + '';  
    var re = /(-?\d+)(\d{3})/  
    while(re.test(num)){  
      num = num.replace(re, '$1,$2')  
    }  
  if (eValue.indexOf(".") >= 0){
    eValue = num + "." + decPart;
  }else{
    eValue = num ;
  }
   return eValue;
}
//test:
alert(formatNumber('231209067534546.34'));
</script>

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/4709/4709362.xml?temp=.2866632
      

  2.   

    测试例
    <input type=text name=txt onkeyup="test(this)"><script>
    //用于处理小数
    function dot(v) {
      var re = /\.\d\d/;
      if(re.test(v))
        return v.replace(/(.+\.\d\d).*/,"$1");
      return v;
    }//用于处理千分位
    function comma(v){
      v = v.replace(/,/g,"");
      var ar = v.split(".");
      var s = ar[0];
      var d = "";
      var re=/(\d+)(\d{3})/;
      while(re.test(s))
        s=s.replace(re,"$1,$2");
      if(ar.length>1)
        return s+"."+ar[1];
      return s;
    }//事件入口
    function test(o){
      o.value = comma(o.value);
      o.value = dot(o.value);
    }
    </script>
      

  3.   

    以上代码有点问题,
    下面这句代码:
    var re = /(-?\d+)(\d{3})/;要改成:
    var re = /^(-?\d+)(\d{3})/