javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > JS判断输入值为正整数

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

作者:历史老师-

在项目开发中,有时候需要使用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> 

扩展:

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

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判断输入值为正整数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文