无论变量内容是字符串还是数字,这都有效。
isNaN(num) // returns true if the variable does NOT contain a valid number
isNaN(123) // false
isNaN('123') // false
isNaN('1e10000') // false (This translates to Infinity, which is a number)
isNaN('foo') // true
isNaN('10px') // true
当然,如果需要,你可以否定这一点。例如,要实现您提供的IsNumeric
示例:
function isNumeric(num){
return !isNaN(num)
}
仅在字符串仅包含数字字符时才有效,否则返回NaN
。
+num // returns the numeric value of the string, or NaN
// if the string isn't purely numeric characters
+'12' // 12
+'12.' // 12
+'12..' // Nan
+'.12' // 0.12
+'..12' // Nan
+'foo' // NaN
+'12px' // NaN
用于将 '12px' 转换为 12,例如:
parseInt(num) // extracts a numeric value from the
// start of the string, or NaN.
parseInt('12') // 12
parseInt('aaa') // NaN
parseInt('12px') // 12
parseInt('foo2') // NaN These last two may be different
parseInt('12a5') // 12 from what you expected to see.
请记住,与+num
不同, parseInt
(顾名思义)将通过砍掉小数点后面的所有内容将浮点数转换为整数(如果你想使用parseInt()
因为这种行为, 你可能会更好改为使用另一种方法 ):
+'12.345' // 12.345
parseInt(12.345) // 12
parseInt('12.345') // 12
空字符串可能有点违反直觉。 +num
将空字符串转换为零,并且isNaN()
假设相同:
+'' // 0
isNaN('') // false
但是parseInt()
不同意:
parseInt('') // NaN
你可以去 RegExp 方式:
var num = "987238";
if(num.match(/^-{0,1}\d+$/)){
//valid integer (positive or negative)
}else if(num.match(/^\d+\.\d+$/)){
//valid float
}else{
//not valid number
}
如果你只是想检查字符串是否是一个整数(没有小数位),正则表达式是一个很好的方法。诸如isNaN
类的其他方法对于如此简单的事情来说太复杂了。
function isNumeric(value) {
return /^-{0,1}\d+$/.test(value);
}
console.log(isNumeric('abcd')); // false
console.log(isNumeric('123a')); // false
console.log(isNumeric('1')); // true
console.log(isNumeric('1234567890')); // true
console.log(isNumeric('-23')); // true
console.log(isNumeric(1234)); // true
console.log(isNumeric('123.4')); // false
console.log(isNumeric('')); // false
console.log(isNumeric(undefined)); // false
console.log(isNumeric(null)); // false
要仅允许正整数使用此:
function isNumeric(value) {
return /^\d+$/.test(value);
}
console.log(isNumeric('123')); // true
console.log(isNumeric('-23')); // false