温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java正则怎么匹配小数

发布时间:2026-07-24 07:07:11 来源:亿速云 阅读:109 作者:小樊 栏目:编程语言

在 Java 中,用正则表达式匹配小数时,常见需求有几种,下面按场景给你总结,并附上可直接用的示例


一、匹配常见小数(如 1.23.14-0.5

✅ 推荐正则

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

含义

  • -?:可选负号
  • \d+:整数部分(至少一位)
  • (\.\d+)?:可选小数部分

Java 示例

String regex = "-?\\d+(\\.\\d+)?";
String input = "3.14";

boolean match = input.matches(regex);
System.out.println(match); // true

二、匹配必须包含小数点的小数(如 1.2,不允许 3

-?\d+\.\d+

示例

String regex = "-?\\d+\\.\\d+";
System.out.println("3.14".matches(regex)); // true
System.out.println("3".matches(regex));    // false

三、匹配小数(允许 .5 这种写法)

-?(\d+\\.\d+|\.\d+)

支持

  • 0.5
  • .5
  • -.5

示例

String regex = "-?(\\d+\\.\\d+|\\.\\d+)";
System.out.println(".5".matches(regex));     // true
System.out.println("-0.5".matches(regex));  // true

四、匹配科学计数法(如 1.2e10-3.5E-2

-?\d+(\.\d+)?([eE][+-]?\d+)?

示例

String regex = "-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?";
System.out.println("1.2e10".matches(regex));   // true
System.out.println("-3.5E-2".matches(regex));  // true

五、匹配正数小数(不允许负号)

\d+(\.\d+)?

六、在 Java 中的注意事项(很重要)

1️⃣ String.matches()全量匹配

"3.14".matches("\\d+\\.\\d+"); // true
"a3.14b".matches(...)          // false

如果你要从文本中提取小数,要用 Pattern + Matcher

Pattern p = Pattern.compile("-?\\d+\\.\\d+");
Matcher m = p.matcher("价格 3.14 和 -0.5");

while (m.find()) {
    System.out.println(m.group());
}

七、常见错误

❌ 忘记转义 .

"\\d+.\\d+"   // 错误
"\\d+\\.\\d+" // 正确

❌ 用 .* 包住正则(没必要)


八、总结速查表

需求 正则
任意小数 -?\d+(\.\d+)?
必须有小数点 -?\d+\.\d+
支持 .5 `-?(\d+.\d+
科学计数法 -?\d+(\.\d+)?([eE][+-]?\d+)?

如果你有具体场景(比如校验金额、解析文本、限制几位小数),可以直接告诉我,我可以帮你写更精确的正则

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI