题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
示例1
输入
"123.45e+6"
返回值
true
解题思路
构造表示数值的正则表达式[\+-]?[0-9](\.[0-9])?([eE][\+-]?[0-9]+)?
[\+-]? 出现+或者-或者不出现
[0-9]* 出现数字0次或多次
(\.[0-9]*)? 如果出现.后边则跟着出现数字
([eE][\+-]?[0-9]+)? 出现e或E之后,+,-可出现可不出现,但其后必须存在数字
java代码如下
public class Solution { public boolean isNumeric(char[] str) { String string = String.valueOf(str); return string.matches("[\\+-]?[0-9]*(\\.[0-9]*)?([eE][\\+-]?[0-9]+)?"); } }