正则表达式容易疏忽的地方:
1.底数不为空。如e8不是数字。
2.数字整数部分小数部分不能同时为空。如.不是数字。

现在个人觉得最完善的正则:

public class Solution {
    public boolean isNumeric(char[] str) {
        String s=String.valueOf(str);
        return s.matches("[\\+\\-]?(\\d*\\.\\d+|\\d+\\.?)([eE][\\+\\-]?\\d+)?");
    }
}

参考了讨论里Framee大佬还有其他很多大佬的回答。