在 Java 中,用正则表达式匹配小数时,常见需求有几种,下面按场景给你总结,并附上可直接用的示例。
1.2、3.14、-0.5)-?\d+(\.\d+)?
-?:可选负号\d+:整数部分(至少一位)(\.\d+)?:可选小数部分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-.5String 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+)?
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+)? |
如果你有具体场景(比如校验金额、解析文本、限制几位小数),可以直接告诉我,我可以帮你写更精确的正则。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。