我有以下正则表达式,用于匹配/验证十进制数字:
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);
}
因此,除负数外,所有正数均会通过。 如何扩展正则表达式以也接受负数,例如。接受第一个字符“-”吗?
答案 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;
}
...