Java 正则表达式验证数字
在 Java 中,可以使用正则表达式来验证字符串是否为数字,以下是几种常见的数字验证方式:

(图片来源网络,侵删)
基本整数验证
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class NumberValidator {
public static boolean isInteger(String str) {
// 匹配正整数、负整数和0
Pattern pattern = Pattern.compile("^-?\\d+$");
Matcher matcher = pattern.matcher(str);
return matcher.matches();
}
public static void main(String[] args) {
System.out.println(isInteger("123")); // true
System.out.println(isInteger("-456")); // true
System.out.println(isInteger("0")); // true
System.out.println(isInteger("12.3")); // false
System.out.println(isInteger("abc")); // false
}
}
浮点数验证
public class NumberValidator {
public static boolean isDouble(String str) {
// 匹配浮点数(包括正负号、小数点)
Pattern pattern = Pattern.compile("^-?\\d+(\\.\\d+)?$");
Matcher matcher = pattern.matcher(str);
return matcher.matches();
}
public static void main(String[] args) {
System.out.println(isDouble("123.45")); // true
System.out.println(isDouble("-0.789")); // true
System.out.println(isDouble(".5")); // false (可选,根据需求调整)
System.out.println(isDouble("123")); // true (整数也是有效的浮点数)
System.out.println(isDouble("abc")); // false
}
}
科学计数法数字验证
public class NumberValidator {
public static boolean isScientificNumber(String str) {
// 匹配科学计数法数字
Pattern pattern = Pattern.compile("^-?\\d+(\\.\\d+)?[eE][-+]?\\d+$");
Matcher matcher = pattern.matcher(str);
return matcher.matches();
}
public static void main(String[] args) {
System.out.println(isScientificNumber("1.23e-4")); // true
System.out.println(isScientificNumber("5E10")); // true
System.out.println(isScientificNumber("1e5")); // true
System.out.println(isScientificNumber("1e")); // false
System.out.println(isScientificNumber("abc")); // false
}
}
更严格的数字验证(不允许前导零)
public class NumberValidator {
public static boolean isStrictNumber(String str) {
// 严格匹配数字(不允许前导零,除非是0本身)
Pattern pattern = Pattern.compile("^(0|[1-9]\\d*)(\\.\\d+)?$");
Matcher matcher = pattern.matcher(str);
return matcher.matches();
}
public static void main(String[] args) {
System.out.println(isStrictNumber("123")); // true
System.out.println(isStrictNumber("0")); // true
System.out.println(isStrictNumber("0.45")); // true
System.out.println(isStrictNumber("01")); // false
System.out.println(isStrictNumber("00.5")); // false
}
}
使用 Java 内置方法验证
除了正则表达式,Java 还提供了内置方法来验证数字:
public class NumberValidator {
public static boolean isNumeric(String str) {
try {
Double.parseDouble(str);
return true;
} catch (NumberFormatException e) {
return false;
}
}
public static void main(String[] args) {
System.out.println(isNumeric("123")); // true
System.out.println(isNumeric("12.3")); // true
System.out.println(isNumeric("1e5")); // true
System.out.println(isNumeric("abc")); // false
}
}
注意事项
- 正则表达式中的
^和 分别表示字符串的开始和结束,确保整个字符串匹配 \d表示数字字符,等同于[0-9]- 表示前面的元素出现0次或1次
- 表示前面的元素出现1次或多次
- 如果需要更复杂的数字验证,可以组合使用这些元字符
选择哪种方法取决于你的具体需求,比如是否需要支持负数、小数、科学计数法等。

(图片来源网络,侵删)
