js中有一个函数parseInt,可以将对象转换成数字类型,一旦转换失败,统一转换成一种特殊的数字类型,即NaN,表示这不是数字,
于是乎,当我们想判断一个对象可(转)为正常的数字时,会想到下面的编码
if (parseInt(str) == NaN) { alert('不是数字'); }
其实这个是错误的,
js中自带了一个方法判断一个对象是否可为数字,即 isNaN,用法如下:
function checknum(str) { if (isNaN(str)) { alert("不是数字"); } }
另外,可用正则表达式,最完整最精确的方法:
1)
"^\d+$" //非负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$" //正整数
"^((-\d+)|(0+))$" //非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$" //负整数
"^-?\d+$" //整数
"^\d+(" //非负浮点数(正浮点数 + 0)
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数
"^((-\d+(" //非正浮点数(负浮点数 + 0)
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数
"^(-?\d+)(" //浮点数
2)
var r = /^+?[1-9][0-9]*$/; //正整数
r.test(str);