当前位置: 首页 > 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;}
}

相关文章:

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

这篇文章将讨论如何确定一个变量是否代表 JavaScript 中的有效数字。 1.JS中的test是原来是JS中检测字符串中是否存在的一种模式&#xff0c;JS输入值是否为判断正整数代码&#xff1a; <script type”text/javascript”> function test() { var num document.getElem…...

Android开发八股文,Android也有自己的八股文了

前言别的行业都有自己的八股文&#xff0c;凭什么Android没有。2023春招即将来临&#xff0c;很多同学会问 Android开发的面试题有必要背吗&#xff1f;我的回答是&#xff1a;很有必要。你可以讨厌这种模式&#xff0c;但你一定要去背&#xff0c;因为不背你就进不了大厂。国内…...

你需要同款“Unreal项目自动化编译、打包和部署”方案吗?

在过往几期的UWA Pipeline最佳实践案例中&#xff0c;我们分享了如何通过Pipeline实现性能优化、性能管理、游戏内容验收和云真机系统的应用&#xff08;实现批量真机设备的自动化测试&#xff0c;以及针对特效性能优化的方式&#xff09;&#xff0c;其实这些高效的方法并不局…...

电子技术——CMOS-AB类输出阶

电子技术——CMOS-AB类输出阶 本节我们研究CMOS-AB类输出阶。 经典配置 下图展示了一个经典的CMOS-AB类输出阶&#xff1a; 这个很像BJT二极管偏置版本的AB类输出阶&#xff0c;在这里二极管偏置变成了 Q1Q_1Q1​ 和 Q2Q_2Q2​ 偏置。不想BJT的情况&#xff0c;这里 QNQ_NQN​…...

2023王道考研数据结构笔记第二章线性表

第二章 线性表 2.1 线性表的定义 2.1.1 线性表的基本概念 线性表是具有相同数据类型的n(n>0)个数据元素的有限序列&#xff0c;其中n为表长&#xff0c;当n0时线性表是一个空表。若用L命名线性表&#xff0c;则其一般表示为&#xff1a; L(a1,a2,...,ai,ai1,...,an)L(a_1…...

[chapter 11][NR Physical Layer][Layer Mapping]

前言&#xff1a;这里参考Curious Being系列 &#xff0c;简单介绍一下NR 5G 物理层核心技术层映射.我们主要讲了一下what is layer Mapping, why need layer Mapping, how layer Mapping 参考文档&#xff1a;3GPP 38.211- 6.3.1.3 Layer mapping《5G NR Physical Layer | Cha…...

什么是工业物联网(IIoT)?

什么是工业物联网(IIoT)?工业物联网(IIoT) 被定义为一组设备和应用&#xff0c;允许大企业创建从核心到边缘的端到端连接环境。其还包括传统的物理基础设施&#xff0c;如集装箱和物流卡车&#xff0c;以收集数据&#xff0c;对事件做出反应&#xff0c;并在智能设备的帮助下做…...

「TCG 规范解读」PC 平台相关规范(4)

可信计算组织&#xff08;Ttrusted Computing Group,TCG&#xff09;是一个非盈利的工业标准组织&#xff0c;它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立&#xff0c;并采纳了由可信计算平台联盟&#xff08;the Trusted Computing Platform Alli…...

CSS背景属性之颜色渐变

颜色渐变 颜色渐变其实在网页设计中并不是特别常见&#xff0c; 但也不可避免的会出现导航栏是渐变色这种情况或者别的不是单一颜色的情况&#xff0c; 例如&#xff1a;这样的设计解决方案并不是只可以使用颜色渐变&#xff0c;我们可以使用两个div拼接&#xff0c;将文字放…...

IPv4地址细讲

文章目录一、IPv4地址简介二、IPv4地址的表示方法点分十进制记法三、IP地址的分类四、特殊IPv4地址&#xff1a;全 “0” 和全 “1”五、常用的三类IP地址使用范围六、五类IP地址的范围一、IPv4地址简介 IPv4地址分5类&#xff0c;每一类地址都由固定长度的字段组成&#xff1…...

sql语句中exists用法详解

文章目录一、语法说明exists&#xff1a;not exists&#xff1a;二、常用示例说明1.查询a表在b表中存在数据2.查询a表在b表中不存在数据3.查询时间最新记录4.exists替代distinct剔除重复数据总结一、语法说明 exists&#xff1a; 括号内子查询sql语句返回结果不为空&#xff…...

思迅软件端口不通导致软件和软锁报错的问题

一、端口不通导致软件和软锁报错的问题 问题说明&#xff1a;打开软件提示到&#xff1a;xxx.xxx.xxx.xxx失败&#xff01; 处理步骤1&#xff1a; 假设软锁服务器IP为192.168.0.1&#xff0c;分别在服务器本机和客户端电脑测试软锁服务: 在服务器的浏览器中访问地址: http:/…...

Docker之路(7.DockerFile文件编写、DockerFile 指令解释、CMD与ENTRYPOINT的区别)

1.DockerFile介绍 dockerfile 是用来构建docker镜像的文件&#xff01;命令参数脚本&#xff01; 构建步骤&#xff1a; 编写一个dockerfile文件docker build构建成为一个镜像docker run 运行镜像docker push发布镜像&#xff08;DockerHub、阿里云镜像仓库&#xff09; 2.Dock…...

[软件测试]如何使用Eclipse导入项目并打开

&#x1f9d1;‍&#x1f393;个人介绍&#xff1a;大二软件生&#xff0c;现学JAVA、Linux、MySQL、算法 &#x1f4bb;博客主页&#xff1a;渡过晚枫渡过晚枫 &#x1f453;系列专栏&#xff1a;[编程神域 C语言]&#xff0c;[java/初学者]&#xff0c;[蓝桥杯] &#x1f4d…...

emplace_back与push_back异同

vector的emplace_back与push_back 文章目录vector的emplace_back与push_back前言1.区别总览2.push_back支持右值引用不支持传入多个构造参数总是会进行拷贝构造3.emplace_backemplace_back可以接受多个构造参数支持原地构造前言 在vector中&#xff0c;通过push_back与emplace_…...

【C语言航路】第十五站:程序环境和预处理

目录 一、程序的翻译环境和执行环境 二、编译和链接 1.翻译环境 2.编译本身也分为几个阶段 3.运行环境 三、预处理 1.预定义符号 2.#define 1.#define定义标识符 2.#define定义宏 3.#define 替换规则 4.#和## 5.带副作用的宏参数 6.宏和函数的对比 7.命名约定 …...

Vue3 - 获取 Proxy 对象代理中包裹的 “真实数据“,解决对象或数组打印后是 Proxy 对象无法拿到原始数据的问题(提供 2 种详细解决方案)

前言 在 Vue3 中很多数据都被 Proxy 代理对象 “包裹”(无法拿到其真正的原始数据),另外就是请求回来的数据,例如通过 res.data.data 拿到了一个数组对象格式的数据。但是这个数据被 Proxy 包裹,你根本拿不到值无法进行处理。 本文实现了 Vue3 取到被 proxy 对象包裹的原始…...

ESP32设备驱动-ML8511紫外线传感器驱动

ML8511紫外线传感器驱动 1、ML8511介绍 ML8511 是一款紫外线传感器,适用于室内或室外获取紫外线强度。 ML8511 配备了一个内部放大器,可根据紫外线强度将光电流转换为电压。 这种独特的功能提供了与 ADC 等外部电路的简单接口。 在掉电模式下,典型的待机电流为 0.1 μ \mu…...

SC12B触摸感应芯片评测方案(1)

MM32F0160SC12B Touch Application Evaluation 文章目录MM32F0160SC12B Touch Application EvaluationIntroduction & RequirementHardwareSC12B & SC12B Sample Demo boardMini-F0160 boardSoftwareMCU Software - MM32F0160PC Tool - FreeMASTERSummaryIntroduction …...

企业如何实现精细化人员管理?五大业务场景值得关注

近年来&#xff0c;随着大数据、人工智能和云计算等信息技术不断升级与渗透&#xff0c;处在数字化变革的劳动力密集型企业希望利用更加智能化的劳动力管理软件&#xff0c;帮助企业实现规范化的管理。 面对企业劳动力管理理念的变化&#xff0c;以及数字化转型的发展渗透&…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...

go 里面的指针

指针 在 Go 中&#xff0c;指针&#xff08;pointer&#xff09;是一个变量的内存地址&#xff0c;就像 C 语言那样&#xff1a; a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10&#xff0c;通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...