不灭的火

革命尚未成功,同志仍须努力下载JDK17

作者:AlbertWen  添加时间:2012-12-07 15:14:13  修改时间:2025-04-05 03:12:47  分类:06.前端/Vue/Node.js  编辑

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);