Java 正则表达式匹配小数点后两位
在 Java 中,你可以使用正则表达式来匹配小数点后恰好有两位小数的数字,以下是几种常见的实现方式:

匹配正数(包括整数和小数)
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class DecimalRegex {
public static void main(String[] args) {
String regex = "^\\d+(\\.\\d{2})?$";
Pattern pattern = Pattern.compile(regex);
String[] testCases = {
"123", // 匹配(整数)
"123.45", // 匹配
"123.4", // 不匹配(只有一位小数)
"123.456", // 不匹配(三位小数)
".45", // 不匹配(没有整数部分)
"123.", // 不匹配(没有小数部分)
"-123.45", // 不匹配(负数)
"abc" // 不匹配(非数字)
};
for (String testCase : testCases) {
Matcher matcher = pattern.matcher(testCase);
System.out.println(testCase + ": " + matcher.matches());
}
}
}
匹配正数且必须有两位小数
String regex = "^\\d+\\.\\d{2}$";
匹配包括负数的数字
String regex = "^-?\\d+(\\.\\d{2})?$";
匹配包括负数且必须有两位小数
String regex = "^-?\\d+\\.\\d{2}$";
匹配科学计数法(可选)
String regex = "^-?\\d+(\\.\\d{2})?([eE][-+]?\\d+)?$";
常用正则表达式说明
^- 字符串开始- - 字符串结束
\\d- 数字(等同于[0-9])- - 前面的元素出现一次或多次
- - 前面的元素出现零次或一次
\\.- 匹配小数点(需要转义){2}- 前面的元素恰好出现2次- - 可选的负号
验证示例
public static boolean isValidDecimal(String input) {
return input.matches("^\\d+(\\.\\d{2})?$");
}
注意:如果你需要验证用户输入,建议先使用 Double.parseDouble() 或 BigDecimal 进行数值验证,然后再用正则表达式进行格式验证。

