题目
- 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,“-123”,“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。
- leetcode链接:https://leetcode-cn.com/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/
思路
- 正则
/**
* @param {string} s
* @return {boolean}
* 符号:[+-]?
* 普通数:.1 or 1. or 1.1 or 1
* 指数:(普通数)e[+-]?(至少一个整数)
*/
var isNumber = function(s) {
s = s.replace(/^\s+/, '').replace(/\s+$/, '')
const fuhao = `[+-]?`
const num = `(\\d+|\\d+\\.|\\.\\d+|\\d+\\.\\d+)`
const zhishu = `${num}[eE]${fuhao}\\d+`
const reg = new RegExp(`^${fuhao}(${num}|${zhishu})$`)
return reg.test(s)
};