在我的应用程序中,有一种方法可以从服务器返回值。我得到的值的格式是字符串。
MESSAGE :
url:'xxxxxx',
date:'xx/xx/xxxx',
time:'xx:xx:xx',
body:"10"
现在体内有一个整数值,但它以字符串形式出现。有可能不是字符串中的数字,而是字符串中的浮点数,字符,特殊符号等不相关的数据。
body:'157a'
body:'22/2'
body:'/45'
现在我的要求是,当我获得该值时,我必须检查以字符串形式出现的数据是否是完美的整数。不应为零,负数,浮点数或字符。
例如
以下格式符合我的要求
body:'225'
body:'147'
body:'534'
根据我的要求,以下格式不可接受
body:'0'
body:'-145'
body:'22/a'
body:'67,54'
我尝试使用parseInt()或isNan(),但我已经检查了是否可以
var data = parseInt('76,54');
console.log(data);
返回76的。但是按照我的要求,它不应该那样。有什么方法可以检查从服务器获取的字符串中的整数。
答案 0 :(得分:0)
您可以使用正则表达式来验证该值是一串十进制数字。
function isIntegerDigits(s) {
return /^[0-9]+$/.test(s);
}
["225", "147", "534", "0", "-145", "22/a", "67,54"].forEach(c =>
console.log(c, isIntegerDigits(c) && parseInt(c) !== 0)
);
输出
225 true
147 true
534 true
0 false
-145 false
22/a false
67,54 false
答案 1 :(得分:0)
是的,它很容易
body*1 === parseInt(body*1,10) && body > 0
对此进行检查,只有在正整数的情况下,您才会为真
答案 2 :(得分:0)
function checkNumber(x){
console.log(!!Number(x))
}
let a = '123dx'
let b = '133'
let c = 'yx123'
checkNumber(a)//false
checkNumber(b)//true
checkNumber(c)//false
检查的安全方法是使用Number
并将其显式包装,并使用双重否定!!
来获取布尔值
答案 3 :(得分:0)
您这样做
if (+body && !(+body%1) && +body > 0) {
// only positive numbers
}
这将+body
将主体值转换为数字,并检查其是否!= 0
然后+body > 0
检查是否为正值