判断字符串是否为数字

【主题思想】实现方式、isNaN() VS 正则

请给字符串扩展一个 isNumber 方法,判断字符串是否是数值字符串,例如
a'.isNumber() // false
'0'.isNumber() // true
'1e10000'.isNumber() // true
'12px'.isNumber() // false
'3.141592653'.isNumber() // true
'NaN'.isNumber() // false
' '.isNumber() // false

PS:以上题目来着内部JS小测

正则

var isNumber = function(str) {
  return /^[\d|\.]*$/g.test(str);
}
// 'a'.isNumber() // false
// '0'.isNumber() // true
// '1e10000'.isNumber() // fasle
// '12px'.isNumber() // false
// '3.141592653'.isNumber() // true
// 'NaN'.isNumber() // false
// '   '.isNumber() // false
// '0xae'.isNumber() // false

isNaN()

var isNumber = function(str){
  return !isNaN(str);
}
// 'a'.isNumber() // false
// '0'.isNumber() // true
// '1e10000'.isNumber() // true
// '12px'.isNumber() // false
// '3.141592653'.isNumber() // true
// 'NaN'.isNumber() // false
// '   '.isNumber() // false
// '0xae'.isNumber() // true

正则 VS isNaN()

isNaN()✅
对于八进制or科学计数法(例如0xae1e10000),isNaN()方法的判断依旧是符合预期的,而正则会有误
isNaN() 会判断某个参数是不是NaN,如果传参是NaN,返回true,否则返回false,在这个过程中会出强制转换

你可能感兴趣的:(判断字符串是否为数字)