Home > Web Front-end > JS Tutorial > body text

How to determine whether a value is a number in js

coldplay.xixi
Release: 2023-01-03 09:23:50
Original
8660 people have browsed it

JS method to determine whether a value is a number: 1. Use the [isNaN()] function, the code is [return typeof value === 'number' && !isNaN(value)]; 2. Use regular expressions ;3. Use the [parseFloat()] function.

How to determine whether a value is a number in js

The operating environment of this tutorial: windows7 system, javascript version 1.8.5, DELL G3 computer. This method is suitable for all brands of computers.

js method to determine whether a value is a number:

1. Disadvantages of using isNaN() function

isNaN() The reason 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; 
  } 
}
Copy after login

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

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

isNaN() detailed explanation

For empty arrays and arrays 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.

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

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

2. Use regular expressions 

(1). As long as the check 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;
    }
}
Copy after login

(2). Verify the positive and negative numbers and 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;
    } 
}
Copy after login

3. Use the parseFloat() function

/**
* 验证数据 是数字:返回true;不是数字:返回false
**/
function Number(val) {
  if (parseFloat(val).toString() == "NaN") {
    
    return false;
  } else {
    return true;
  }
}
//isNaN(val)不能判断空串或一个空格
//如果是一个空串、空格或null,而isNaN是做为数字0进行处理的,而parseInt与parseFloat是返回一个错误消息,这个isNaN检查不严密而导致的。
Copy after login

Related free learning recommendations: javascript video tutorial

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

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!