判斷方法:1、利用isNaN()函數(shù),語(yǔ)法“isNaN(value)”,如果值為數(shù)字則返回false;2、利用typeof的返回值,語(yǔ)法“typeof(value)”,如果返回的值為“Number”,則為數(shù)字;3、使用正則表達(dá)式判斷。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
javascript判斷指定值是不是數(shù)字
方法1:isNaN()函數(shù)
isNaN() 函數(shù)可確定值是否為非數(shù)字(Not-a-Number)。如果該值等于 NaN,則此函數(shù)返回 true。否則返回 false。
var c="hello"; //字符串 isNaN(c); //返回一個(gè)true; var c=10; //數(shù)字 isNaN(c);//返回一個(gè)false
isNaN()的缺點(diǎn)就在于 null、空格以及空串會(huì)被按照0來(lái)處理,需要優(yōu)化一下
/** *判斷是否是數(shù)字 * **/ function isRealNum(val){ // isNaN()函數(shù) 把空串 空格 以及NUll 按照0來(lái)處理 所以先去除, if(val === "" || val ==null){ return false; } if(!isNaN(val)){ //對(duì)于空數(shù)組和只有一個(gè)數(shù)值成員的數(shù)組或全是數(shù)字組成的字符串, //isNaN返回false,例如:'123'、[]、[2]、['123'],isNaN返回false, //所以如果不需要val包含這些特殊情況,則這個(gè)判斷改寫(xiě)為if(!isNaN(val) && typeof val === 'number' ) return true; } else{ return false; } }
方法2:利用typeof的返回值
驗(yàn)證方法:如果返回的值為Number,則為數(shù)字;如果返回值為String或其它,則不是數(shù)字。如下所示:
var a=123; var b='123abc'; typeof(a) //Number typeof(b) //String
方法3:使用正則表達(dá)式
(1)、校驗(yàn)只要是數(shù)字(包含正負(fù)整數(shù),0以及正負(fù)浮點(diǎn)數(shù))就返回true
/** * 校驗(yàn)只要是數(shù)字(包含正負(fù)整數(shù),0以及正負(fù)浮點(diǎn)數(shù))就返回true **/ function isNumber(val){ var regPos = /^d+(.d+)?$/; //非負(fù)浮點(diǎn)數(shù) var regNeg = /^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //負(fù)浮點(diǎn)數(shù) if(regPos.test(val) && regNeg.test(val)){ return true; }else{ return false; } }
(2)、 校驗(yàn)正負(fù)正數(shù)就返回true
/** * 校驗(yàn)正負(fù)正數(shù)就返回true **/ function isIntNum(val){ var regPos = / ^d+$/; // 非負(fù)整數(shù) var regNeg = /^-[1-9][0-9]*$/; // 負(fù)整數(shù) if(regPos.test(val) && regNeg.test(val)){ return true; }else{ return false; } }
【推薦學(xué)習(xí):javascript高級(jí)教程】