如何判断&;123@231.23&;在javascript中不是一个数字
How to tell if "123@231.23" is not a number in javascript?
parseInt("123@231.23")
返回123,这是一个数字。
有很多函数用来检测某个东西是否已经是一个数字,但是它们都依赖于parseInt。
在不使用正则表达式的情况下,检测这不是整数的另一种通用方法是什么?
if (isNaN("123@231.23"))
{
alert("IsNaN - not a number");
}
else
{
alert ("it is a number");
}
我假设OP需要区分输入是否是数字。如果输入是浮点数或整数看起来与他的问题无关。也许,我错了…
编辑:好的,为了让大家开心,javascript中的整数非常大。javascript中的整数有多大?
询问是否为整数是在询问它是否为9007199254740992和-9007199254740992之间的整数。用模数%
$("#cmd").click(function (e) { ChectIfInteger( $("#txt").val() ) });
function ChectIfInteger(myval){
if (isNaN(myval)){
alert("not integer (not number)")
}
else{
//it is a number but it is integer?
if( myval % 1 == 0 ){
if (myval <= 9007199254740992 && myval >= -9007199254740992)
{
alert("it is integer in javascript");
}
else{
alert ("not integer");
}
}
else{
alert("nope, not integer");
}
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="txt"/>
<input type="button" id="cmd" value="test input">
转换回字符串并比较:
String(parseInt("123"))=="123" // true
String(parseInt("123.sdfs"))=="123.sdfs" //false
如果您真的想要检查"是否为有效整数"您必须将isNaN
与以下内容结合:
function isValidInteger(numberToTest) {
return !(isNaN(numberToTest) || String(parseInt(numberToTest)) !== numberToTest.toString());
}
这将计算如下:
console.log(isValidInteger('123@231.23')); // false
console.log(isValidInteger('123231.23')); // false
console.log(isValidInteger('12323')); // true
console.log(isValidInteger(1e-1)); // false
console.log(isValidInteger('1e-1')); // false
这对数字也适用。以下是PLNKR测试
我认为这是测试整数的最好方法:
function isInt(str) {
if (typeof str !== 'number' && typeof str !== 'string') {
return false;
}
return str % 1 === 0;
}
请注意,像"123.0"这样的字符串/数字的计算结果为true
。
这里还有一个不依赖字符串的例子:
function looksLikeInteger(n) {
return +n == n && +n === ~~n;
}
可能应该被称为"looksLikeJavaScriptInteger",因为它只适用于32位整数。它使用一元+
强制转换为数字,然后检查是否相等(因此丑陋的字符串和对象会被抛出),然后检查以确保强制转换为整数时数字值不会改变。
相关文章:
- 递增一个数字而不去掉前导零
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 制作一个regex来验证只有一个数字的字符串
- 如何限制一个字段只接受4个数字字符作为输入,并获得'It’这是潜水警报
- 为什么这个正则表达式不't匹配最后一个字母数字字符
- 一个jquery验证器方法,它不接受纯数字或纯特殊字符,但接受上面是否有字母
- 如何拆分一个整数和产生的所有数字来创建一个新数字
- 如何使用至少一个数字、一个大写字母和6-20个字符验证密码
- 当与另一个实例进行比较时,我的类实例如何隐式返回数字
- 简单的Javascript方式,在输入字段的每5位数字后添加一个空格
- 有没有办法在里面看到一个数字'的64位浮点IEEE754表示
- PHP函数识别3个数字中最低的一个并更改其类
- 我如何解析二's是一个数字的补码字符串
- 为什么我需要在这里输入var,为什么它会给我一个数字作为答案?(Javascript)
- 在我的网站上创建一个在1-10之间不断变化的数字时遇到了问题.Javascript
- 如何获取一个以零开头的数字的位数
- 如何创建一个确定2个数字之间值的函数
- 当我添加一个新数字时,如何获得一些数字的即时平均值
- 为什么 JavaScript 如果一个数字有一个前导零,就将其视为八进制