You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何编写匹配2个小数点、整数最多4位每段小数最多2位的正则

符合要求的正则验证规则

你可以使用如下正则满足所有校验规则:

^\d{1,4}(?:\.\d{1,2}){0,2}$

如果需要兼容不支持\d语法的老旧正则引擎,可替换为全量字符写法:

^[0-9]{1,4}(?:\.[0-9]{1,2}){0,2}$

如果你的校验环境不支持非捕获分组,去掉正则中的?:即可正常使用,不影响匹配结果。


规则匹配说明

  • 开头^\d{1,4}:匹配1-4位的整数前缀,满足「整数部分最多4位数字」的要求
  • 中间(?:\.\d{1,2}):为匹配单元,对应「小数点+1到2位数字」的结构,满足「每个小数点后最多2位数字」的要求
  • 结尾{0,2}$:限定前面的匹配单元可以出现0次、1次或者2次,刚好对应无小数点、1个小数点、2个小数点的三种合法场景

如果你的业务允许小数点后留空(例如1234.这类格式),把正则中的\d{1,2}调整为\d{0,2}即可。


原有正则的问题说明

你之前编写的^[0-9]{1,4}(\.[0-9]{0,2})(\.[0-9]{0,2})?$无法覆盖全场景的核心原因是:第一个(\.[0-9]{0,2})分组没有加可选量词,意味着必须至少出现1个小数点,所以无法匹配纯整数的yyyy格式,同时分组的写法也限制了结构的灵活性。


校验效果验证

合法场景全部覆盖

  • 纯整数:1234
  • 1个小数点1位小数:1234.1
  • 2个小数点各1位小数:1234.1.2
  • 2个小数点第二位2位小数:1234.1.22
  • 2个小数点第一位2位小数:1234.11.2
  • 2个小数点都2位小数:1234.11.22

非法场景全部拦截

  • 1234.111.22:第一个小数点后有3位数字,匹配失败
  • 1234.11.222:第二个小数点后有3位数字,匹配失败

内容的提问来源于stack exchange,提问作者Mands

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:42:03