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判断输入值为正整数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
VSCode中 Eslint 和 Prettier 冲突问题最新解决方法
这篇文章主要介绍了VSCode中 Eslint和Prettier冲突问题,既然使用 eslint规范,我的理解上当然是不能去修改eslint,因为这是共用规范,修改了就没有再使用的必要了,所以我是不推荐修改eslint的方式,本文给结合实例代码给大家详细讲解,需要的朋友可以参考下2023-02-02JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
这篇文章主要介绍了JavaScript实现弹出DIV层同时页面背景渐变成半透明效果,涉及JavaScript弹出窗口的实现及页面元素属性动态变换的相关技巧,需要的朋友可以参考下2016-03-03理解Javascript_07_理解instanceof实现原理
在《Javascript类型检测》一文中讲到了用instanceof来用做检测类型,让我们来回顾一下2010-10-10
最新评论