Home >Web Front-end >JS Tutorial >js determines whether the value is a number

js determines whether the value is a number

藏色散人
藏色散人Original
2021-03-01 15:00:0839772browse

JS method to determine whether the value is a number: 1. Use the isNaN() function to determine whether the value is a number; 2. Use regular expressions to determine whether the value is a number; 3. Use the parseFloat() function to determine whether the value is a number. is a number.

js determines whether the value is a number

The operating environment of this article: windows7 system, DELL G3 computer

JS determines whether the value is a number

1. Use the isNaN() function

The disadvantage of isNaN() is that null, spaces and empty strings will be treated as 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;   } }

The most correct way to use the isNaN() function to determine whether a value is a number is:

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

isNaN() detailed explanation [Recommended :js Basic Tutorial

Reference link: https://wangdoc.com/javascript/types/number.html#isnan

For empty arrays and For an array with only one numeric member, isNaN returns false.

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

The reason why the above code returns false is that these arrays can be converted into numerical values ​​by the Number function. Please refer to the chapter "Data Type Conversion".

Therefore, it is best to determine the data type before using isNaN.

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

2. Use regular expressions

(1), to check as long as it is a number (including positive and negative integers, 0 and positive and negative floating point numbers) It will return 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), If it checks the positive and negative numbers, it will return 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. Use parseFloat() function

 (parseFloat(val).toString() == "NaN"

The above is the detailed content of js determines whether the value is a number. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn