我的isNumber正则表达式出了什么问题?

时间:2016-09-24 19:34:11

标签: regex

为什么此函数会将"e10"作为true返回? (应该是false

public boolean isNumber(String s) {
    String pattern = "\\s*[+-]?((\\d+.?\\d*)|.\\d+)(e[+-]?\\d+)?\\s*";

    return s.matches(pattern);
}

1 个答案:

答案 0 :(得分:2)

由于((\\d+.?\\d*)|.\\d+)。第二部分意味着. - 任何事物的匹配器,\d+ - 至少一个数字。 如果您打算匹配实际的点字符,请改用\.