這篇文章將討論如何確定一個變量是否代表 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
?(不是數字)。此外,它不適用于可以強制轉換為有限數字的字符串。要處理此問題,請?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. 使用一元加
最后,您可以檢查數值?一元加號 (+)?運算符,如下圖:
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來處理文章來源:http://www.zghlxwxcb.cn/news/detail-739205.html
NaN: Not a Number文章來源地址http://www.zghlxwxcb.cn/news/detail-739205.html
/**
*判斷是否是數字
*
**/
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判斷輸入值是否為正整數,判斷變量是否為數字的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!