判断字符串是否为数字

【主题思想】实现方式、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,在这个过程中会出强制转换。

    推荐阅读