我想要最简单的故障安全测试来检查JavaScript中的字符串是否为正整数。
isNaN(str)
为所有类型的非整数值返回true,parseInt(str)
为浮点字符串返回整数,如“2.5”。我也不想使用jQuery插件。
在节点和超过90%的浏览器(除了IE和Opera Mini)上工作的现代解决方案是使用Number.is整数,然后进行简单的正面检查。
Number.isInteger(x) && x > 0
这在ECMAScript 2015中最终确定。
function isPositiveInteger(x) {
return Number.isInteger(x) && x > 0
}
Polyfil是:
Number.isInteger = Number.isInteger || function(value) {
return typeof value === 'number' &&
isFinite(value) &&
Math.floor(value) === value;
};
如果您需要支持字符串或数字形式的输入,那么您可以使用我在所有现有答案(2/1/2018)在某种形式的输入上失败后编写的大型测试套件。
function isPositiveInteger(v) {
var i;
return v && (i = parseInt(v)) && i > 0 && (i === v || ''+i === v);
}
如果我们认为JavaScript整数是最大值<代码> 4294967295 (即<代码> Maul.PoW(2 32)-1 < /COD>),那么下面的简短解决方案将完美地工作:
function isPositiveInteger(n) {
return n >>> 0 === parseFloat(n);
}
描述:
123.45
-1
1e10
测验:
"0" : true
"23" : true
"-10" : false
"10.30" : false
"-40.1" : false
"string" : false
"1234567890" : true
"129000098131766699.1" : false
"-1e7" : false
"1e7" : true
"1e10" : false
"1edf" : false
" " : false
"" : false
演示:http://jsfiddle.net/5UCy4/37/
另一种方法适用于所有有效到
Number的数值。最大值
,即约为1.7976931348623157e 308
:
function isPositiveInteger(n) {
return 0 === n % (!isNaN(parseFloat(n)) && 0 <= ~~n);
}
描述:
!isNaN(parseFloat(n))
用于过滤纯字符串值,例如,,,,“字符串”
0
测验:
"0" : true
"23" : true
"-10" : false
"10.30" : false
"-40.1" : false
"string" : false
"1234567890" : true
"129000098131766699.1" : false
"-1e10" : false
"1e10" : true
"1edf" : false
" " : false
"" : false
演示:http://jsfiddle.net/5UCy4/14/
以前的版本:
function isPositiveInteger(n) {
return n == "0" || ((n | 0) > 0 && n % 1 == 0);
}
演示:http://jsfiddle.net/5UCy4/2/
给你两个答案:
>
基于解析
正则表达式
请注意,在这两种情况下,我都将正整数解释为包括0
,即使0
不是正的。如果您想禁止0
,我将包含注释。
如果希望它是一个在合理值范围内的标准化十进制整数字符串,可以执行以下操作:
function isInDesiredForm(str) {
var n = Math.floor(Number(str));
return n !== Infinity && String(n) === str && n >= 0;
}
或者,如果要允许空白和前导零:
function isInDesiredForm(str) {
str = str.trim();
if (!str) {
return false;
}
str = str.replace(/^0+/, "") || "0";
var n = Math.floor(Number(str));
return n !== Infinity && String(n) === str && n >= 0;
}
实时测试台(不处理前导零或空格):
js lang-js prettyprint-override">function isInDesiredForm(str) {
var n = Math.floor(Number(str));
return n !== Infinity && String(n) === str && n >= 0;
}
function gid(id) {
return document.getElementById(id);
}
function test(str, expect) {
var result = isInDesiredForm(str);
console.log(
str + ": " +
(result ? "Yes" : "No") +
(expect === undefined ? "" : !!expect === !!result ? " <= OK" : " <= ERROR ***")
);
}
gid("btn").addEventListener(
"click",
function() {
test(gid("text").value);
},
false
);
test("1", true);
test("1.23", false);
test("1234567890123", true);
test("1234567890123.1", false);
test("0123", false); // false because we don't handle leading 0s
test(" 123 ", false); // false because we don't handle whitespace
<label>
String:
<input id="text" type="text" value="">
<label>
<input id="btn" type="button" value="Check">
问题内容: 我想要最简单的故障安全测试来检查JavaScript中的字符串是否为正整数。 对于各种非整数值返回true,并且为浮点字符串返回整数,例如“ 2.5”。而且我也不想使用某些jQuery插件。 问题答案: 为您提供两个答案: 基于解析 正则表达式 请注意,在两种情况下,我都将“正整数”解释为包括,即使它不是正数。如果您不愿意,我会提供注释。 基于解析 如果希望它是在合理值范围内的归一化十
我的Java应用程序“A”正在从另一个Java应用程序获取移动电话号码作为字符串。因此,在应用程序A获得手机号码字符串后,我需要验证该手机号码字符串中是否只有数字。为了验证我使用了如下的简单逻辑, 我正在检查I=1,因为国家代码的第一个字符将是“”。这种方法是O(n)。还有另一种方法,我们可以使用。这将抛出<代码> No.MultFrimeExtry,以便我们可以捕获并考虑它是一个字母数字字符串。
本文向大家介绍C#验证给定字符串是否为数字的方法,包括了C#验证给定字符串是否为数字的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#验证给定字符串是否为数字的方法。分享给大家供大家参考。具体分析如下: 这段C#代码用于验证给定的字符串是否为数字,不能用于验证负数,字符串中只能出现数字和小数点,否则认为不是数字,不验证数字的长度,也就是说,给定的字符串再长,哪怕是1万个字符,也可以
我的控制器中有请求,是MongoId的字符串版本。如果我使用无效的字符串格式(与MongoId格式不匹配)调用此请求,则该请求将一直执行,直到MongoDB调用抛出内部服务器错误。 我如何验证,例如或"ANWPINREBAFSOFASD"未被验证,并在我的请求中尽早停止 电流控制器endpoint: 该服务称为:
问题内容: 我正在尝试确定字符串数组中的特定项目是否为整数。 我是形式上的中缀表达式,然后尝试将结果数组拆分为两个数组;一个用于整数,一个用于运算符,同时丢弃括号和其他杂项。做到这一点的最佳方法是什么? 我以为我也许可以找到一种方法或某种方法,但是没有运气。 问题答案: 最幼稚的方式是遍历String并确保所有元素对于给定的基数都是有效数字。由于你必须至少查看一次每个元素,因此这将尽可能地提高效率
问题内容: 如何检查字符串是否是Java中的URL? 问题答案: 您可以尝试用它创建一个对象。如果该URL不正确,则会引发a。