用正则即可解决
1. /^\d+$/.test(str)
2. 方法有些笨
<script language="javascript"><!--
var n = 1235456346;
var s = String(n);
var str = "";
while(s.length>0){
str = ","+s.substr(s.length-3) + str;
s   = s.substr(0, s.length-3);
}
str = str.substr(1);
alert(str);
//-->
</script> 

解决方案 »

  1.   

    这个好像简单一些2. 
    <script language="javascript"><!--
    var s = "1235456346";
    while(/^\d{4}/.test(s))s=s.replace(/(\d{3})($|,)/, ",$1$2");
    alert(s);
    //-->
    </script>
      

  2.   

    1.
    <input onkeypress="return event.keyCode>=48&&event.keyCode<=57"
     onpaste="return !/\D/.test(clipboardData.getData('text'))"
     ondragenter="return false" style="ime-mode:disabled">2.
    function formatNum(num, digit) //将数字转换成三位逗号分隔的样式
    {
      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");
      if (c && digit && new RegExp("^.(\\d{"+ digit +"})(\\d)").test(c)){
      if (RegExp.$2>4) c = (parseFloat(RegExp.$1)+1)/Math.pow(10, digit);
      else c = "."+ RegExp.$1;}
      return a +""+ b +""+ (c+"").substr((c+"").indexOf("."));
    }
    alert(formatNum(-12345678.005, 2));
    alert(formatNum("12345678.1256246", 6));
    alert(formatNum("10000000000000000000000000000000000000000"));