第一种方法 isNaN
isNaN返回一个 Boolean 值,指明提供的值是否是保留值 NaN (不是数字)。
NaN 即 Not a Number
isNaN(numValue)
但是如果numValue果是一个空串或是一个空格,而isNaN是做为数字0进行处理的,而parseInt与parseFloat是返回一个错误消息,这个isNaN检查不严密而导致的。
第二种方法 正则表达式
function checkRate(input) {
var re = /^[0-9]+.?[0-9]*$///判断字符串是否为数字 //判断正整数 /^[1-9]+[0-9]*]*$/
var nubmer = document.getElementById(input).value
if (!re.test(nubmer)) {
alert("请输入数字")
document.getElementById(input).value = ""
return false
}
}
第三种方法 利用parseFloat的返回值
/*----0313-------------验证数据 是数字:返回true;不是数字:返回false--------工具方法,不含有业务逻辑---------------------*/
function isNotANumber(inputData) {
//isNaN(inputData)不能判断空串或一个空格
//如果是一个空串或是一个空格,而isNaN是做为数字0进行处理的,而parseInt与parseFloat是返回一个错误消息,这个isNaN检查不严密而导致的。
if (parseFloat(inputData).toString() == "NaN") {
//alert("请输入数字……")注掉,放到调用时,由调用者弹出提示。
return false
} else {
return true
}
}
判断一个参数是不是数字的方法:
isNaN() 不是一个数字 is not a number
if(isNaN(a)){
alert("a不是数字")
}else{
alert("a是数字")
原理:
一、利用expr做计算时变量或字符串必须是整数的规则,把一个变量或字符串和一个已知的整数(非0)相加,看命令返回的值是否为0.如果为0,就认为加法的变量或字符串为整数,否则就不是。
i=5
expr $I + 6 &>/dev/null
echo $?
如果输出的是0,那么表明i是整数,反之则表示为非整数。其中$?表示的是最后运行的代码的返回值
上述判断中,有&>表示的就是不管是什么,都重定向到/dev/null中。
二、使用sed加正则表达式
思路:删除一个字符串中的所有数字,看字符串的长度是否为0,如果不为0,则不是整数。
if [ -n "`echo char | sed 's/[0-9]//g'`" ]
then
echo "char"
else
echo "number"
fi
三、用变量的子串替换
思路:如果num的长度不为0,并且把num中的非数字部分删除,然后看结果是不是等于num本身,如果两者成立,那么就是数字,反之亦然。
if [ -n "$num" -a "$num" = "${num//[^0-9]/}" ]
then
echo "char"
else
echo "number"
fi
1、isNaN()
使用js自带全局函数isNaN(), isNaN()返回一个Boolean值,如下 :
var c="hello" //字符串isNaN(c) //返回一个false
var c=10 //数字
inNaN(c)//返回一个true
如果以上c为一个空串或是一个空格,isNaN将把c当作数字0来处理,所以检查不严谨。
2、正则表达式
function checkNum(input){var reg=/^[0-9]+.?[0-9]*$/ //判断字符串是否为数字 ,判断正整数用/^[1-9]+[0-9]*]*$/
var num=document.getElementById(input).value
if(!reg.test(num)){
alert("请输入数字")
document.getElementById(input).value=""
return false
}
}
3、利用typeof的返回值
验证方法:如果返回的值为Number,则为数字;如果返回值为String或其它,则不是数字。如下所示:
var a=123var b='123abc'
typeof(a) //Number
typeof(b) //String