当前位置: 首页 > news >正文

JS判断输入值是否为正整数,判断变量是否为数字

这篇文章将讨论如何确定一个变量是否代表 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);               // trueisNumber(new Number(1));    // trueisNumber(1.0);              // true
isNumber(1.1);              // true
isNumber(Math.PI);          // trueisNumber('1');              // true
isNumber('string');         // falseisNumber(NaN);              // false
isNumber(Infinity);         // false
isNumber(-Infinity);        // falseisNumber(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);               // trueisNumber(new Number(1));    // trueisNumber(1.0);              // true
isNumber(1.1);              // true
isNumber(Math.PI);          // trueisNumber('1');              // false
isNumber('string');         // falseisNumber(NaN);              // true
isNumber(Infinity);         // true
isNumber(-Infinity);        // trueisNumber(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);               // trueisNumber(new Number(1));    // trueisNumber(1.0);              // true
isNumber(1.1);              // true
isNumber(Math.PI);          // trueisNumber('1');              // true
isNumber('string');         // falseisNumber(NaN);              // false
isNumber(Infinity);         // false
isNumber(-Infinity);        // falseisNumber(true);             // false
isNumber(undefined);        // false
isNumber([1]);              // false

4. 使用一元加

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

const isNumber = n => (n === +n);isNumber(1);                // true
isNumber(0);                // true
isNumber(-1);               // trueisNumber(new Number(1));    // falseisNumber(1.0);              // true
isNumber(1.1);              // true
isNumber(Math.PI);          // trueisNumber('1');              // false
isNumber('string');         // falseisNumber(NaN);              // false
isNumber(Infinity);         // true
isNumber(-Infinity);        // trueisNumber(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;}
}

http://www.lryc.cn/news/24607.html

相关文章:

  • Android开发八股文,Android也有自己的八股文了
  • 你需要同款“Unreal项目自动化编译、打包和部署”方案吗?
  • 电子技术——CMOS-AB类输出阶
  • 2023王道考研数据结构笔记第二章线性表
  • [chapter 11][NR Physical Layer][Layer Mapping]
  • 什么是工业物联网(IIoT)?
  • 「TCG 规范解读」PC 平台相关规范(4)
  • CSS背景属性之颜色渐变
  • IPv4地址细讲
  • sql语句中exists用法详解
  • 思迅软件端口不通导致软件和软锁报错的问题
  • Docker之路(7.DockerFile文件编写、DockerFile 指令解释、CMD与ENTRYPOINT的区别)
  • [软件测试]如何使用Eclipse导入项目并打开
  • emplace_back与push_back异同
  • 【C语言航路】第十五站:程序环境和预处理
  • Vue3 - 获取 Proxy 对象代理中包裹的 “真实数据“,解决对象或数组打印后是 Proxy 对象无法拿到原始数据的问题(提供 2 种详细解决方案)
  • ESP32设备驱动-ML8511紫外线传感器驱动
  • SC12B触摸感应芯片评测方案(1)
  • 企业如何实现精细化人员管理?五大业务场景值得关注
  • C/C++每日一练(20230301)
  • Vue项目中components组件的使用笔记
  • 2023软件测试行情不行了?
  • 【java web篇】数据库连接池Driud的使用
  • 无损音乐格式:FLAC和ALAC
  • 第十届蓝桥杯省赛——4质数(质数判断,数学函数:开方函数)
  • MASKGROUP: HIERARCHICAL POINT GROUPING AND MASKING FOR 3D INSTANCE SEGMENTATION
  • 为什么地图可视化炙手可热?
  • JAVA代码审计篇-SQL注入
  • SpringBoot接口传参方式
  • 高通平台开发系列讲解(Sensor篇)AlsPs的工作原理及介绍