function formatNum(s) //将数字转换成三位逗号分隔的样式
{
  if(!/^(\+|-)?\d+(\.\d+)?$/.test(num)){alert("wrong!"); return num;}
  var re = new RegExp().compile("(\\d)(\\d{3})(,|\\.|$)");
  num += ""; while(re.test(num))
    num = num.replace(re, "$1,$2$3")
  return num;
}
alert(formatNum(-12345678.123));
alert(formatNum("12345678.123"));
alert(formatNum("10000000000000000000000000000000000000000"));

解决方案 »

  1.   

    function addCommaToNumber(numberStr)//将数字转换成三位逗号分隔的样式
    {
    var str=numberStr;
    var subs=new Array()
    var newStr=""
    for(var i=str.length,j=0;i>0;i-=3,j++) 
    subs[j]=str.substring(i,i-3) 
    subs.reverse()
    for(var i=0;i<subs.length;i++) 
    newStr+=(i==subs.length-1)?subs[i]:subs[i]+","
    return newStr
    }
      

  2.   

    meizz(梅花雪) ( ) 信誉:705 
    小数点后面不要加逗号,怎样改正则表达式?
      

  3.   

    不好意思, 测试不周:$
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function formatNum(num) //将数字转换成三位逗号分隔的样式
    {
      if(!/^(\+|-)?(\d+)(\.\d+)?$/.test(num)){alert("wrong!"); return num;}
      var a = RegExp.$1, b = RegExp.$2, c = RegExp.$3;
      var re = new RegExp().compile("(\\d)(\\d{3})(,|$)");
      while(re.test(b)) b = b.replace(re, "$1,$2$3");
      return a +""+ b +""+ c;
    }
    alert(formatNum(-12345678.123456));
    alert(formatNum("12345678.1237805"));
    alert(formatNum("10000000000000000000000000000000000000000"));
    //-->
    </SCRIPT>