我想用最简单的故障安全测试来检查JavaScript中的字符串是否是正整数。
isNaN(str)为所有非整数值返回true, parseInt(str)为浮点字符串返回整数,如“2.5”。我也不想使用一些jQuery插件。
我想用最简单的故障安全测试来检查JavaScript中的字符串是否是正整数。
isNaN(str)为所有非整数值返回true, parseInt(str)为浮点字符串返回整数,如“2.5”。我也不想使用一些jQuery插件。
当前回答
这几乎是一个重复的问题:
在JavaScript中验证十进制- IsNumeric()
答案是:
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
所以,一个正整数是:
function isPositiveInteger(n) {
var floatN = parseFloat(n);
return !isNaN(floatN) && isFinite(n) && floatN > 0
&& floatN % 1 == 0;
}
其他回答
简单的
function isInteger(num) {
return (num ^ 0) === num;
}
console.log(isInteger(1));
你也可以扩展Number并通过prototype将函数赋值给它。
我的函数检查数字是否为+ve,也可以是十进制值。
function validateNumeric(numValue){
var value = parseFloat(numValue);
if (!numValue.toString().match(/^[-]?\d*\.?\d*$/))
return false;
else if (numValue < 0) {
return false;
}
return true;
}
这几乎是一个重复的问题:
在JavaScript中验证十进制- IsNumeric()
答案是:
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
所以,一个正整数是:
function isPositiveInteger(n) {
var floatN = parseFloat(n);
return !isNaN(floatN) && isFinite(n) && floatN > 0
&& floatN % 1 == 0;
}
如果你正在使用HTML5表单,你可以使用attribute min="0" for form element <input type="number" />。所有主流浏览器都支持这一功能。它不需要Javascript来完成这些简单的任务,而是集成在新的html标准中。 它被记录在https://www.w3schools.com/tags/att_input_min.asp上
看起来正则表达式是可行的:
var isInt = /^\+?\d+$/.test('the string');