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

标签 java regex

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

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/

相关文章:

regex - vim - 按表达式折叠代码

regex - Perl:使用正则表达式将十六进制编码的字符串解析为数组

java - SpringLayout 不适用于 Java 5 (mac) VERTICAL_CENTER

java - 为什么 default-target-url 和 AJAX 调用总是得到 "GET: 403 Forbidden "?

java - JPA。 JOIN 嵌套 SELECT "unexpected token ("

html - RegEx 仅返回 'href' 标签的 'link' 属性?

java - Android,解析 JSON 对象

java - Spring Boot应用程序无法连接到Weblogic

php - 从短语中删除单词,单词之间只留一个空格

c# - 找到匹配的单词