JavaScript判斷輸入值是否為正整數(shù)(判斷變量為數(shù)字)
這篇文章將討論如何確定一個變量是否代表 JavaScript 中的有效數(shù)字。
1.JS中的test是原來是JS中檢測字符串中是否存在的一種模式,JS輸入值是否為判斷正整數(shù)代碼:
<script type=”text/javascript”> function test() { var num = document.getElementById(“num”).value; if (num==”") { alert(‘請輸入內(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=”測試” ο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 庫,您可以使用 $.isNumeric() 方法,它確定傳遞的值是否代表一個有效的數(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]); // false
3. 使用 typeof 操作符
在純 JavaScript 中,您可以使用 typeof 運(yùn)算符,它返回一個指示操作數(shù)類型的字符串。您可以將其與嚴(yán)格的相等運(yùn)算符一起使用,以檢查原始數(shù)值。此外,要檢查 Number
對象也是如此,您可以使用 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ù)字的字符串。要處理此問題,請?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]); // false
4. 使用一元加
最后,您可以檢查數(shù)值 一元加號 (+) 運(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
請注意,這不適用于 Number
反對,并考慮 +Infinity
和 -Infinity
作為數(shù)字。此外,它不處理可以強(qiáng)制轉(zhuǎn)換為有限數(shù)字的字符串。這些可以以與之前的解決方案相同的方式處理。
5.使用isNaN()函數(shù)
isNaN()的缺點(diǎn)就在于 null、空格以及空串會被按照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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js實(shí)現(xiàn)帶有介紹的Select列表菜單實(shí)例
這篇文章主要介紹了js實(shí)現(xiàn)帶有介紹的Select列表菜單,涉及javascript頁面元素的動態(tài)操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-08-08JS結(jié)合WebSocket實(shí)現(xiàn)實(shí)時雙向通信
WebSocket 是一種在 Web 應(yīng)用程序中實(shí)現(xiàn)實(shí)時、雙向通信的協(xié)議,在本文中,我們將深入介紹 WebSocket 的原理、用法以及一些實(shí)際應(yīng)用場景,x需要的可以參考下2023-11-11input框中自動展示當(dāng)前日期yyyy/mm/dd的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猧nput框中自動展示當(dāng)前日期yyyy/mm/dd的實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07JS+CSS實(shí)現(xiàn)帶小三角指引的滑動門效果
這篇文章主要介紹了JS+CSS實(shí)現(xiàn)帶小三角指引的滑動門效果,可實(shí)現(xiàn)帶有箭頭提示效果的滑動門功能,涉及JavaScript動態(tài)操作頁面元素樣式的相關(guān)技巧,需要的朋友可以參考下2015-09-09解決layui動態(tài)加載復(fù)選框無法選中的問題
今天小編就為大家分享一篇解決layui動態(tài)加載復(fù)選框無法選中的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09JavaScript對數(shù)字的判斷與處理實(shí)例分析
這篇文章主要介紹了JavaScript對數(shù)字的判斷與處理方法,實(shí)例分析了javascript判斷數(shù)字的常見方法與針對數(shù)字處理的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-02-02