【leetcode】Valid Number
题目如下:
解题思路:对于这种题目,还是用正则表达式吧。顺便吐槽下,这个题目坑实在是太多太多了,各种数字的表达类型都要考虑到,反正就是慢慢尝试呗。如果是像我一样对正则表达式不是特别熟练的话,还是建议把各种情况分开,不要写在一个表达式里,不然要死很多脑细胞的。
代码如下:
var isNumber = function(s) { s = s.replace(/(^\s*)|(\s*$)/g, "") //0 if(s == '0'){ return true } if(s.replace(/\./g,"") == ""){ return false } //不包括任何一个数字 var re = /\d/ if( !re.test(s) ){ return false } //正负整数 //var re = new RegExp(rs); re = /^[\+-]?[0-9]\d{0,}$/ if( re.test(s) ){ return true } //正负小数 re = /^[\+-]?[0-9]?\d{0,}\.\d{0,}$|^[\+-]?0\.\d{0,}$/ if( re.test(s) ){ return true } // .1 re = /^-?\.\d{1,}$/ if( re.test(s) ){ return true } //科学计数法 //.e1 -> false; .2e1->true; 1.431352e7 ->true re = /^[\+-]?[0-9]+e[-\+]?\d{1,}$|^[\+-]?[0-9]+\.{1}e[-\+]?\d{1,}$|^[\+-]?\d*\.{1}\d+e[-\+]?\d{1,}$/ if( re.test(s) ){ return true } return false };