function formatNumber(s){
s=s+"";
 if(/[^0-9\.]/.test(s)) return "invalid value";-----现在这里只能接收正整数。
        s=s.replace(/^(\d*)$/,"$1.");
        alert(s+" a1");
        s=(s+"00").replace(/(\d*\.\d\d)\d*/,"$1");
        alert(s+" a2");
        s=s.replace(".",",");
        alert(s+" a3");
        var re=/(\d)(\d{3},)/;
        while(re.test(s))
                s=s.replace(re,"$1,$2");
        s=s.replace(/,(\d\d)$/,".$1");
        return  s.replace(/^\./,"0.")
        }求高人修改一下。。

解决方案 »

  1.   

    if(/[^0-9\.\-]/.test(s)) return "invalid value";
      

  2.   

    s=s.replace(/^(\d*)$/,"$1."); 
    s=(s+"00").replace(/(\d*\.\d\d)\d*/,"$1"); 
    现在这2段代码是在正整数的情况下能在数值后加小数点。请问怎么样在负数情况下也能加小数点。
      

  3.   

    s=s.replace(/^-?(\d*)$/,"$1."); 
    s=(s+"00").replace(/(-?\d*\.\d\d)\d*/,"$1");
      

  4.   

    s=s.replace(/^((\-)?\d*)$/,"$1.");
      

  5.   

    你是要把数字格式化为货币格式吧:function formatCoin(v)
    {
    if(v === "" || v === undefined)
    return ""; var nv = eval((v+"").replace(/,/g,""))+"";
    if(!/^\-?\d*\.?\d*$/.test(nv))
    return "";
    nv += nv.indexOf('.')<0? ".00" : "00";
    nv = nv.replace(/^(\d*\.\d{2})\d*$/ ,"$1");
    while(/\d\d{3}[\.,]/.test(nv))
    nv = nv.replace(/(\d)(\d{3}[\.,])/, "$1,$2")
    return nv;
    }