JS 判断一个值是不是为数字

JavaScript015

JS 判断一个值是不是为数字,第1张

js判断是否是数字

第一种方法 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=123

var b='123abc'

typeof(a) //Number

typeof(b) //String