题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
思路:1、正则式匹配。(英雄不问出处,好汉亦可流氓!)
\\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。
^表示:匹配字符串开始的地方。
$表示:匹配字符串结束的地方。
*表示:零次或多次匹配前面的字符或子表达式。
+表示:一次或多次匹配前面的字符或子表达式。
?表示:零次或一次匹配前面的字符或子表达式
{n}表示:n 是非负整数。正好匹配 n 次。
{n,}表示:n 是非负整数。至少匹配 n 次。
{n, m}表示:m 和 n 是非负整数,其中 n <= m。匹配至少 n 次,至多 m 次。
x|y表示:匹配 x 或 y。
[xyz]表示:字符集。匹配包含的任一字符。
[^xyz]表示:反向字符集。匹配未包含的任何字符。
[a-z]表示:字符范围。匹配指定范围内的任何字符。
public boolean isNumeric(char[] str) {
String string = String.valueOf(str);
return string.matches("[\\+-]?[0-9]*(\\.[0-9]*)?([eE][\\+-]?[0-9]+)?");
}