Java正则表达式验证字符串是否为正负整数和小数

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
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容