我想用最简单的故障安全测试来检查JavaScript中的字符串是否是正整数。
isNaN(str)为所有非整数值返回true, parseInt(str)为浮点字符串返回整数,如“2.5”。我也不想使用一些jQuery插件。
我想用最简单的故障安全测试来检查JavaScript中的字符串是否是正整数。
isNaN(str)为所有非整数值返回true, parseInt(str)为浮点字符串返回整数,如“2.5”。我也不想使用一些jQuery插件。
当前回答
根据上面VisioN的回答,如果你正在使用jQuery验证插件,你可以使用这个:
$(document).ready(function() {
$.validator.addMethod('integer', function(value, element, param) {
return (value >>> 0 === parseFloat(value) && value > 0);
}, 'Please enter a non zero integer value!');
}
然后你可以在你的常规规则集中使用或动态添加它,如下所示:
$("#positiveIntegerField").rules("add", {required:true, integer:true});
其他回答
看起来正则表达式是可行的:
var isInt = /^\+?\d+$/.test('the string');
我的问题基本上是相同的:检查用户输入的数字是否为整数和正数。
我们的朋友Levi的代码和响应是我迄今为止在整个互联网上发现的最好的,在处理错误方面令人满意。
我在网站(https://bobbyhadz.com/blog/javascript-check-if-string-is-positive-integer):)上找到了下面的代码
function isPositiveInteger(str) {
if (typeof str !== 'string') {
return false;
}
const num = Number(str);
if (Number.isInteger(num) && num > 0) {
return true;
}
return false;
}
但是,对于1e10,它不能正确返回。
我的函数检查数字是否为+ve,也可以是十进制值。
function validateNumeric(numValue){
var value = parseFloat(numValue);
if (!numValue.toString().match(/^[-]?\d*\.?\d*$/))
return false;
else if (numValue < 0) {
return false;
}
return true;
}
根据上面VisioN的回答,如果你正在使用jQuery验证插件,你可以使用这个:
$(document).ready(function() {
$.validator.addMethod('integer', function(value, element, param) {
return (value >>> 0 === parseFloat(value) && value > 0);
}, 'Please enter a non zero integer value!');
}
然后你可以在你的常规规则集中使用或动态添加它,如下所示:
$("#positiveIntegerField").rules("add", {required:true, integer:true});
这就是我如何验证一个字符串是一个正整数。
瓦尔str =“123”; var str1 =“1.5”; var str2 = -123; 控制台(“is str positive integer:”,数字.isInteger(数字(str)和数字(str) > 0) 控制台(“is str1正图:”,数字.isInteger(数字(str1)和数字(str1) > 0) 控制台(“is str2正图:”,isInteger(数字(str2): && Number(str2) > 0)