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

匹配0.00至2.00(含两位小数)的正则表达式匹配异常求助

解决方案

你可以使用以下正则表达式来准确匹配0.00到2.00(包含整数0、1、2,以及最多两位小数的合法数值):

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

如果需要支持省略整数部分的0(例如.5、.99这类等价于0.5、0.99的写法),可以调整为:

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

原正则的问题分析

你原来的正则^([.]?[0-1][.]?[0-9]{0,2}|2)$存在核心缺陷:

  • 结构过于松散:[.]?[0-1][.]?[0-9]{0,2}允许0-1前后的小数点可选,同时后面直接跟0-2位数字,这就导致111(1后接两位1)、011(0后接两位1)这类不符合数值规范的字符串被错误匹配。
  • 未覆盖合法边界:原正则仅单独匹配整数2,但没考虑2.0、2.00这类合法的带小数形式,同时也没有限制2的小数部分不能大于0。

新正则的详细说明

拆分新正则的每个分支:

  • 0(\.\d{1,2})?:匹配整数0,以及0开头的带1-2位小数的数值(如0.1、0.99)。(\.\d{1,2})?表示小数点加1-2位数字是可选的,确保0后面要么没有额外数字,要么是合法小数部分,避免011这类前导零后接非小数的无效字符串。
  • 1(\.\d{1,2})?:匹配整数1,以及1开头的带1-2位小数的数值(如1.0、1.99),逻辑和0分支一致,避免111、101这类错误匹配。
  • 2(\.0{1,2})?:匹配整数2,以及2.0、2.00这类符合上限要求的带小数数值。\.0{1,2}限制小数部分只能是1个或2个0,确保不会匹配2.1这类超出范围的数值。
  • \.\d{1,2}(可选分支):匹配省略整数部分0的小数(如.0、.55),不需要支持这种写法可直接去掉该分支。

内容的提问来源于stack exchange,提问作者rama krishna g

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:25:18