【发布时间】:2019-04-23 09:14:10
【问题描述】:
我有以下正则表达式,用于匹配/验证十进制数:
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);
}
输出是:
input: 0 ; isValid: true
input: 0.0 ; isValid: true
input: 0.1 ; isValid: true
input: -0.1 ; isValid: false
input: -0.123 ; isValid: false
input: -123.123 ; isValid: false
所以所有正数都通过了,除了负数。 如何扩展我的正则表达式以接受负数,例如。接受第一个字符“-”?
【问题讨论】:
-
使用
-?将匹配-零次或一次,有效地使-成为可选。