Java正则表达式
- 正负整数的正则表达式:"^[+-]?[0-9]+"
- 正负小数的正则表达式:"^[+-]?[0-9]+\\.[0-9]+"
- 整数位为1位有效数字的小数,即大于0且小于10的小数:"(^[-+]?[0-9]\\.[0-9]*[1-9]$)"
- 大于10的小数,且整数不以0开头:(^[-+]?[1-9]+[0-9]*\\.[0-9]*)
- 大于10的小数,且整数不以0开头,小数不以0结尾:(^[-+]?[1-9]+[0-9]*\\.[0-9]*[1-9]$)
代码示例
-
判断字符串是否为合法的数字,包括正负小数和整数
public static void mian(String[] args){
String regularExpression = "(^[+-]?[0-9]+)|(^[+-]?[0-9]+\\.[0-9]+)";
boolean strResult0 = "123".matches(regularExpression); //运行结果:true
boolean strResult1 = "123.01".matches(regularExpression); //运行结果:true
boolean strResult2 = "011.0".matches(regularExpression); //运行结果:true
boolean strResult3 = "00.11".matches(regularExpression); //运行结果:true
boolean strResult4 = "00.11a".matches(regularExpression); //运行结果:false
boolean strResult5 = "Hello May".matches(regularExpression); //运行结果:false
}
PS:此方法只能判断字符串是否为合法的数字,没有将字符串转换成数值时自动截位的情况考虑在内。例如:要将 "0123.010" 转换成数值时,转换后的结果为 123.01,字符串开头的0和小数末尾的0会被视为无效数字自动截掉。
若想完全匹配,即 "012345"、"0123.100" 等转换数值后(自动截位)与原字符串长度不相等的均视为非法,请使用下面的方法。
public static void mian(String[] args){
String regularExpression = "(^[+-]?[0-9]+)|(^[-+]?[0-9]\\.[0-9]*[1-9]$)|(^[-+]?[1-9]+[0-9]*\\.[0-9]*[1-9]$)";
boolean strResult0 = "123".matches(regularExpression); //运行结果:true
boolean strResult1 = "123.01".matches(regularExpression); //运行结果:true
boolean strResult2 = "011.10".matches(regularExpression); //运行结果:false
boolean strResult3 = "00.11".matches(regularExpression); //运行结果:false
boolean strResult4 = "0.11".matches(regularExpression); //运行结果:true
boolean strResult5 = "Hello May".matches(regularExpression); //运行结果:false
}