正则表达式也匹配负十进制数

时间:2019-04-23 09:14:11

标签: java regex

我有以下正则表达式,用于匹配/验证十进制数字:

buildSuggestions

输出为:

String[] inputs = {
    "0",
    "0.0",
    "0.1",
    "-0.1",
    "-0.123",
    "-123.123",
};
final String REG_PATTERN_VALID_DECIMAL_NUMBER = "((?<!\\S)\\d+(?:\\.\\d+)?(?!\\S))|.";
for (String input : inputs) {
    boolean validInput = input.matches(REG_PATTERN_VALID_DECIMAL_NUMBER);
    System.out.println("input: " + input + " ; isValid: " + validInput);
}

因此,除负数外,所有正数均会通过。 如何扩展正则表达式以也接受负数,例如。接受第一个字符“-”吗?

3 个答案:

答案 0 :(得分:1)

模式不必那么复杂,请尝试以下方法:

^-?\d+(\.\d+)?$

-?是同时带有和不带有-符号的部分。 ?表示1或0次出现。

答案 1 :(得分:1)

您不需要现有的正则表达式来匹配正/负小数。您只需在样式之前包含Donald,以匹配1或零个'-'。

-?

答案 2 :(得分:1)

如果您在一个可选的-字符前加上前缀,它应该可以工作:

...
case DialogTurnStatus.Empty:
{
    await this.RouteAsync(innerDc);
    // FIX: Waterfalls with no turns should Complete.
    if (innerDc.Stack.Count == 0)
        await CompleteAsync(innerDc);
    break;
}
...