JavaScript判斷輸入值是否為正整數(shù)(判斷變量為數(shù)字)
這篇文章將討論如何確定一個(gè)變量是否代表 JavaScript 中的有效數(shù)字。
1.JS中的test是原來是JS中檢測(cè)字符串中是否存在的一種模式,JS輸入值是否為判斷正整數(shù)代碼:
<script type=”text/javascript”>
function test() {
var num = document.getElementById(“num”).value;
if (num==”") {
alert(‘請(qǐng)輸入內(nèi)容');
return false;
}
if (!(/(^[1-9]\d*$)/.test(num))) {
alert(‘輸入的不是正整數(shù)');
return false;
}else {
alert(‘輸入的是正整數(shù)');
}
}
</script>
<html>
<body>
<input type=”text” id=”num” />
<input type=”button” value=”測(cè)試” οnclick=”return test()” />
</body>
</html>
擴(kuò)展:
附判斷數(shù)字、浮點(diǎn)的正則表達(dá):
- ”^\\d+$” //非負(fù)整數(shù)(正整數(shù) + 0)
- “^[0-9]*[1-9][0-9]*$” //正整數(shù)
- “^((-\\d+)|(0+))$” //非正整數(shù)(負(fù)整數(shù) + 0)
- “^-[0-9]*[1-9][0-9]*$” //負(fù)整數(shù)
- “^-?\\d+$” //整數(shù)
- “^\\d+(\\.\\d+)?$” //非負(fù)浮點(diǎn)數(shù)(正浮點(diǎn)數(shù) + 0)
- “^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$” //正浮點(diǎn)數(shù)
- “^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$” //非正浮點(diǎn)數(shù)(負(fù)浮點(diǎn)數(shù) + 0)
- “^(-?\\d+)(\\.\\d+)?$” //浮點(diǎn)數(shù)
2.使用 jQuery
使用 jQuery 庫(kù),您可以使用 $.isNumeric() 方法,它確定傳遞的值是否代表一個(gè)有效的數(shù)值。如果值是 number 或 string 類型并且可以強(qiáng)制轉(zhuǎn)換為有限數(shù),則返回 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]); // false3. 使用 typeof 操作符
在純 JavaScript 中,您可以使用 typeof 運(yùn)算符,它返回一個(gè)指示操作數(shù)類型的字符串。您可以將其與嚴(yán)格的相等運(yùn)算符一起使用,以檢查原始數(shù)值。此外,要檢查 Number 對(duì)象也是如此,您可以使用 instanceof 運(yùn)算符,如下
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 (不是數(shù)字)。此外,它不適用于可以強(qiáng)制轉(zhuǎn)換為有限數(shù)字的字符串。要處理此問題,請(qǐng)?zhí)砑右恍└郊訔l件 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]); // false4. 使用一元加
最后,您可以檢查數(shù)值 一元加號(hào) (+) 運(yùn)算符,如下圖:
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請(qǐng)注意,這不適用于 Number 反對(duì),并考慮 +Infinity 和 -Infinity 作為數(shù)字。此外,它不處理可以強(qiáng)制轉(zhuǎn)換為有限數(shù)字的字符串。這些可以以與之前的解決方案相同的方式處理。
5.使用isNaN()函數(shù)
isNaN()的缺點(diǎn)就在于 null、空格以及空串會(huì)被按照0來處理
NaN: Not a Number
/**
*判斷是否是數(shù)字
*
**/
function isRealNum(val){
// isNaN()函數(shù) 把空串 空格 以及NUll 按照0來處理 所以先去除
// if(val === "" || val ==null){
// return false;
//}
//或者 直接判斷 前提是要將值轉(zhuǎn)為number類型
if(typeof val !== 'number'){
return false;
}else{
if(!isNaN(val)){
return true;
}else{
return false;
}
}
}6.使用正則表達(dá)式
/**
* 校驗(yàn)只要是數(shù)字(包含正負(fù)整數(shù),0以及正負(fù)浮點(diǎn)數(shù))就返回true
**/
function isNumber(val){
var regPos = /^\d+(\.\d+)?$/; //非負(fù)浮點(diǎn)數(shù)
var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //負(fù)浮點(diǎn)數(shù)
if(regPos.test(val) || regNeg.test(val)){
return true;
}else{
return false;
}
}
/**
* 校驗(yàn)正負(fù)正數(shù)就返回true
**/
function isIntNum(val){
var regPos = / ^\d+$/; // 非負(fù)整數(shù)
var regNeg = /^\-[1-9][0-9]*$/; // 負(fù)整數(shù)
if(regPos.test(val) || regNeg.test(val)){
return true;
}else{
return false;
}
}總結(jié)
到此這篇關(guān)于JavaScript判斷輸入值是否為正整數(shù)的文章就介紹到這了,更多相關(guān)JS判斷輸入值為正整數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在JavaScript中如何將數(shù)字格式化為指定位數(shù)
本文介紹了在JavaScript中將數(shù)字格式化為3位,不足3位時(shí)在前面補(bǔ)0的幾種方法,每種方法結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2025-11-11
微信小程序?qū)崿F(xiàn)吸頂效果的方法實(shí)例
在微信小程序的開發(fā)中,經(jīng)常會(huì)有列表分類標(biāo)簽隨著界面滾動(dòng)吸頂?shù)男Ч?下面這篇文章主要給大家介紹了關(guān)于微信小程序?qū)崿F(xiàn)吸頂效果的相關(guān)資料,需要的朋友可以參考下2021-08-08
javascript判斷非數(shù)字的簡(jiǎn)單例子
這篇文章介紹了javascript判斷非數(shù)字的簡(jiǎn)單例子,有需要的朋友可以參考一下2013-07-07
js 靜態(tài)動(dòng)態(tài)成員 and 信息的封裝和隱藏
一下用面向?qū)ο蟮南嚓P(guān)概念來解釋js中的仿面向?qū)ο?,因?yàn)閖s中不像其他語(yǔ)言,不存在面向?qū)ο笳Z(yǔ)言的相關(guān)特性2011-05-05
setinterval()與clearInterval()JS函數(shù)的調(diào)用方法
這篇文章主要介紹了setinterval()與clearInterval()JS函數(shù)的調(diào)用方法,實(shí)例分析了setinterval()與clearInterval()的語(yǔ)法結(jié)構(gòu)及使用技巧,需要的朋友可以參考下2015-01-01
PHP實(shí)現(xiàn)記錄代碼運(yùn)行時(shí)間封裝類實(shí)例教程
這篇文章主要給大家介紹了利用PHP實(shí)現(xiàn)記錄代碼運(yùn)行時(shí)間的封裝類的相關(guān)教程,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友可以參考下2017-05-05
使用TypeScript實(shí)現(xiàn)數(shù)組類型判斷方法匯總
本文介紹了在TypeScript中實(shí)現(xiàn)判斷傳入?yún)?shù)是否為數(shù)組的方法,首先,介紹了使用內(nèi)置的Array.isArray()方法,其次,探討了通過自定義類型謂詞和類型守衛(wèi)實(shí)現(xiàn)更復(fù)雜的類型檢查邏輯,最后,提到了這種方法在數(shù)據(jù)處理和函數(shù)重載中的的應(yīng)用場(chǎng)景,需要的朋友可以參考下2026-04-04

