JS判斷值是否是數字


 

1.使用isNaN()函數

isNaN()的缺點就在於 null、空格以及空串會被按照0來處理

NaN: Not a Number

復制代碼
/**
*判斷是否是數字
*
**/

function isRealNum(val){
    // isNaN()函數 把空串 空格 以及NUll 按照0來處理 所以先去除,
  if(val === "" || val ==null){
        return false;
  }
   if(!isNaN(val)){    
  //對於空數組和只有一個數值成員的數組或全是數字組成的字符串,isNaN返回false,例如:'123'、[]、[2]、['123'],isNaN返回false,
//所以如果不需要val包含這些特殊情況,則這個判斷改寫為if(!isNaN(val) && typeof val === 'number' )
    return true; 
  }

 else{
    return false;
  }
}
復制代碼

 

isNaN()函數來判斷一個值是數字的最正確的方法就是:

// true:數值型的,false:非數值型
  function myIsNaN(value) {
    return typeof value === 'number' && !isNaN(value);
  }

 

 

isNaN()詳解

參考鏈接:https://wangdoc.com/javascript/types/number.html#isnan

對於空數組和只有一個數值成員的數組,isNaN返回false

isNaN([]) // false isNaN([123]) // false isNaN(['123']) // false 

上面代碼之所以返回false,原因是這些數組能被Number函數轉成數值,請參見《數據類型轉換》一章。

因此,使用isNaN之前,最好判斷一下數據類型。

function myIsNaN(value) { return typeof value === 'number' && !isNaN(value); } 

 

2.使用正則表達式 

  (1)、校驗只要是數字(包含正負整數,0以及正負浮點數)就返回true

      

復制代碼
/**
* 校驗只要是數字(包含正負整數,0以及正負浮點數)就返回true
**/

function isNumber(val){

    var regPos = /^\d+(\.\d+)?$/; //非負浮點數
    var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //負浮點數
    if(regPos.test(val) && regNeg.test(val)){
        return true;
    }else{
        return false;
    }

}
復制代碼

 

 

  (2)、 校驗正負正數就返回true

復制代碼
/**
* 校驗正負正數就返回true
**/

function isIntNum(val){
    var regPos = / ^\d+$/; // 非負整數 
    var regNeg = /^\-[1-9][0-9]*$/; // 負整數
    if(regPos.test(val) && regNeg.test(val)){
        return true;
    }else{
        return false;
    } 
}
復制代碼

 

3.使用parseFloat()函數

復制代碼
/**
* 驗證數據 是數字:返回true;不是數字:返回false
**/

function Number(val) {
  if (parseFloat(val).toString() == "NaN") {
    
    return false;
  } else {
    return true;
  }
}

//isNaN(val)不能判斷空串或一個空格
//如果是一個空串、空格或null,而isNaN是做為數字0進行處理的,而parseInt與parseFloat是返回一個錯誤消息,這個isNaN檢查不嚴密而導致的。
復制代碼

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM