3 回答
TA贡献1982条经验 获得超2个赞
若要检查变量(包括字符串)是否为数字,请检查它是否不是数字:
不管变量内容是字符串还是数字,这都是可行的。
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
松散地将字符串转换为数字
用于将“12 px”转换为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
TA贡献1851条经验 获得超3个赞
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}
TA贡献1806条经验 获得超8个赞
如果您只是想检查一个字符串是否是一个整数(没有小数位),regex是一个很好的方法。其他方法,如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
添加回答
举报