JavaScript判断输入值是否为正整数(判断变量为数字)

 更新时间:2023年11月10日 11:51:24   作者:历史老师-  
在项目开发中,有时候需要使用JavaScript验证用户输入的是否为正整数,这篇文章主要给大家介绍了关于JavaScript判断输入值是否为正整数(判断变量为数字)的相关资料,需要的朋友可以参考下,

这篇文章将讨论如何确定一个变量是否代表 JavaScript 中的有效数字。

1.JS中的test是原来是JS中检测字符串中是否存在的一种模式,JS输入值是否为判断正整数代码:

<script type=”text/javascript”> 
  function test() { 
    var num = document.getElementById(“num”).value; 
    if (num==”") { 
      alert(‘请输入内容'); 
      return false; 
    } 
    if (!(/(^[1-9]\d*$)/.test(num))) { 
      alert(‘输入的不是正整数'); 
      return false; 
    }else { 
      alert(‘输入的是正整数'); 
    } 
  } 
</script> 

<html> 
<body> 
<input type=”text” id=”num” /> 
<input type=”button” value=”测试” οnclick=”return test()” /> 
</body> 
</html> 

扩展:

附判断数字、浮点的正则表达: 

  • ”^\\d+$” //非负整数(正整数 + 0)
  • “^[0-9]*[1-9][0-9]*$” //正整数
  • “^((-\\d+)|(0+))$” //非正整数(负整数 + 0)
  • “^-[0-9]*[1-9][0-9]*$” //负整数
  • “^-?\\d+$” //整数
  • “^\\d+(\\.\\d+)?$” //非负浮点数(正浮点数 + 0)
  • “^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$” //正浮点数
  • “^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$” //非正浮点数(负浮点数 + 0)
  • “^(-?\\d+)(\\.\\d+)?$” //浮点数

2.使用 jQuery

使用 jQuery 库,您可以使用 $.isNumeric() 方法,它确定传递的值是否代表一个有效的数值。如果值是 number 或 string 类型并且可以强制转换为有限数,则返回 true。

const { JSDOM } = require("jsdom");
const { window } = new JSDOM();
var $ = require("jquery")(window);
 
const isNumber = n => $.isNumeric(n);
 
isNumber(1);                // true
isNumber(0);                // true
isNumber(-1);               // true
 
isNumber(new Number(1));    // true
 
isNumber(1.0);              // true
isNumber(1.1);              // true
isNumber(Math.PI);          // true
 
isNumber('1');              // true
isNumber('string');         // false
 
isNumber(NaN);              // false
isNumber(Infinity);         // false
isNumber(-Infinity);        // false
 
isNumber(true);             // false
isNumber(undefined)         // false
isNumber([1]);              // false

3. 使用 typeof 操作符

在纯 JavaScript 中,您可以使用 typeof 运算符,它返回一个指示操作数类型的字符串。您可以将其与严格的相等运算符一起使用,以检查原始数值。此外,要检查 Number 对象也是如此,您可以使用 instanceof 运算符,如下

const isNumber = n => (typeof(n) === 'number' || n instanceof Number);
 
isNumber(new Number(1));    // true
isNumber(0);                // true
isNumber(-1);               // true
 
isNumber(new Number(1));    // true
 
isNumber(1.0);              // true
isNumber(1.1);              // true
isNumber(Math.PI);          // true
                    
isNumber('1');              // false
isNumber('string');         // false
                    
isNumber(NaN);              // true
isNumber(Infinity);         // true
isNumber(-Infinity);        // true
                    
isNumber(true);             // false
isNumber(undefined);        // false
isNumber([1]);              // false

上述解决方案返回 true +Infinity-Infinity, 和 NaN (不是数字)。此外,它不适用于可以强制转换为有限数字的字符串。要处理此问题,请添加一些附加条件 isFinite() 和 isNaN() 方法。

const isNumber = n => (typeof(n) === 'number' || n instanceof Number ||
                    (typeof(n) === 'string' && !isNaN(n))) &&
                    isFinite(n);
 
isNumber(1);                // true
isNumber(0);                // true
isNumber(-1);               // true
 
isNumber(new Number(1));    // true
 
isNumber(1.0);              // true
isNumber(1.1);              // true
isNumber(Math.PI);          // true
                        
isNumber('1');              // true
isNumber('string');         // false
                        
isNumber(NaN);              // false
isNumber(Infinity);         // false
isNumber(-Infinity);        // false
                        
isNumber(true);             // false
isNumber(undefined);        // false
isNumber([1]);              // false

4. 使用一元加

最后,您可以检查数值 一元加号 (+) 运算符,如下图:

const isNumber = n => (n === +n);
 
isNumber(1);                // true
isNumber(0);                // true
isNumber(-1);               // true
 
isNumber(new Number(1));    // false
 
isNumber(1.0);              // true
isNumber(1.1);              // true
isNumber(Math.PI);          // true
                            
isNumber('1');              // false
isNumber('string');         // false
                            
isNumber(NaN);              // false
isNumber(Infinity);         // true
isNumber(-Infinity);        // true
                            
isNumber(true);             // false
isNumber(undefined);        // false
isNumber([1]);              // false

请注意,这不适用于 Number 反对,并考虑 +Infinity 和 -Infinity 作为数字。此外,它不处理可以强制转换为有限数字的字符串。这些可以以与之前的解决方案相同的方式处理。

5.使用isNaN()函数

isNaN()的缺点就在于 null、空格以及空串会被按照0来处理

NaN: Not a Number

/**
*判断是否是数字
*
**/
function isRealNum(val){
    // isNaN()函数 把空串 空格 以及NUll 按照0来处理 所以先去除
    // if(val === "" || val ==null){
        // return false;
    //}
//或者 直接判断  前提是要将值转为number类型
 if(typeof val !== 'number'){
     return false;
   }else{
 if(!isNaN(val)){
        return true;
    }else{
        return false;
    }
}
}

6.使用正则表达式 

/**
* 校验只要是数字(包含正负整数,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;
    }
}
/**
* 校验正负正数就返回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;
    }
}

总结 

到此这篇关于JavaScript判断输入值是否为正整数的文章就介绍到这了,更多相关JS判断输入值为正整数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • js自定义Tab选项卡效果

    js自定义Tab选项卡效果

    这篇文章主要为大家详细介绍了js自定义Tab选项卡效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • JS实现返回上一页并刷新页面的方法分析

    JS实现返回上一页并刷新页面的方法分析

    这篇文章主要介绍了JS实现返回上一页并刷新页面的方法,结合实例形式分析了javascript针对移动端、PC端浏览器的页面缓存刷新相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • 原生JavaScript实现简单五子棋游戏

    原生JavaScript实现简单五子棋游戏

    这篇文章主要为大家详细介绍了原生JavaScript实现简单五子棋游戏,文中示例代码注释的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • javascript简单写的判断电话号码实例

    javascript简单写的判断电话号码实例

    这篇文章主要介绍了javascript简单写的判断电话号码实例的相关资料,需要的朋友可以参考下
    2017-05-05
  • ECMAScript6新增值比较函数Object.is

    ECMAScript6新增值比较函数Object.is

    这篇文章主要介绍了ECMAScript6新增值比较函数Object.is的相关资料,需要的朋友可以参考下
    2015-06-06
  • VSCode中 Eslint 和 Prettier 冲突问题最新解决方法

    VSCode中 Eslint 和 Prettier 冲突问题最新解决方法

    这篇文章主要介绍了VSCode中 Eslint和Prettier冲突问题,既然使用 eslint规范,我的理解上当然是不能去修改eslint,因为这是共用规范,修改了就没有再使用的必要了,所以我是不推荐修改eslint的方式,本文给结合实例代码给大家详细讲解,需要的朋友可以参考下
    2023-02-02
  • JavaScript实现弹出DIV层同时页面背景渐变成半透明效果

    JavaScript实现弹出DIV层同时页面背景渐变成半透明效果

    这篇文章主要介绍了JavaScript实现弹出DIV层同时页面背景渐变成半透明效果,涉及JavaScript弹出窗口的实现及页面元素属性动态变换的相关技巧,需要的朋友可以参考下
    2016-03-03
  • 微信小程序实现人脸识别

    微信小程序实现人脸识别

    这篇文章主要为大家详细介绍了微信小程序实现人脸识别,实现添加信息和上传照片功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • 两个函数相互调用如何防止死循环

    两个函数相互调用如何防止死循环

    这篇文章主要介绍了两个函数相互调用如何防止死循环问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 理解Javascript_07_理解instanceof实现原理

    理解Javascript_07_理解instanceof实现原理

    在《Javascript类型检测》一文中讲到了用instanceof来用做检测类型,让我们来回顾一下
    2010-10-10

最新评论