Instruction:
[1] typeof判断是否为“number”
[2] 判断是否有小数 有小数, 将小数和整数分开, 结果再合并
没有小数直接操作
patternpoint -> test (true/false)
[3]* /\??(\d+)(\d{3})/;没有/g, 一步步加入“,” 使用while来循环操作
[4] String类型才有replace这些功能, Number转化为String, 再转化为Number类型。
toString() valueOf()
<script type="text/javascript">
function reg(num){
//是否为数字类型 不是:
if (typeof num!="number") {
return "NaN";
}else{
//是数字类型
//判断小数点的正则
var patternpoint=/[.]/g;
//加入,的正则
var pattern=/\??(\d+)(\d{3})/;
// 判断是否存在小数点 true
if (patternpoint.test(num)) {
//if check the point -> split(".")
var pointnum=num.toString().split(".")[1];
var numstr=num.toString().split(".")[0];
while(pattern.test(numstr)){
numstr=numstr.replace(pattern,function($0,$1,$2){
return $1+","+$2;
});
}
//最后结果转回Number类型
return (numstr+"."+pointnum).valueOf();
//没有小数点
}else{
var numstr=num.toString();//convert to the Type String
//判断是否还可以再继续加入","
while(pattern.test(numstr)){ numstr=numstr.replace(pattern,function($0,$1,$2){
return $1+","+$2;
//在两个子括号中加入","
});
}
//最后结果转回Number类型
return numstr.valueOf();
}
}
}
//Test:
var num=-1200009.123;
var num1=-1200009;
var num2=120000900000;
var num3="12123123";
console.log(reg(num));
console.log(reg(num1));
console.log(reg(num2));
console.log(reg(num3));
</script>
Result: