我有以下正则表达式,用于匹配/验证十进制数字:
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
因此,除了负数之外,所有正数都通过。 我如何扩展我的正则表达式以接受负数,例如接受第一个字符“-”?
最佳答案
模式不必那么复杂,试试这个:
^-?\d+(\.\d+)?$
-?
是匹配有或没有 -
符号的部分。 ?
表示出现 1 次或 0 次。
关于java - 正则表达式也匹配负十进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55807909/