如何匹配小数点前仅2位、后仅1或2位的数字?
匹配特定格式数字的正则表达式方案
刚好碰到过类似的需求,我来给你梳理一下怎么写这个正则:
首先明确你的核心规则:
- 整个字符串必须是小数点前恰好2位数字(不能多也不能少,像
090这种三位直接排除) - 小数点后必须是1位或2位数字
- 小数点前不能有前导零(比如
09.59这种带前导零的两位也不匹配,毕竟你举的090.59是三位被排除,推测你也不想接受前导零的两位)
最终正则表达式
^[1-9]\d\.\d{1,2}$
规则拆解
让我给你拆解开每个部分的作用:
^:匹配字符串的开头,确保前面没有多余字符[1-9]:匹配小数点前的第一位数字,只能是1-9,杜绝前导零\d:匹配小数点前的第二位数字,可以是0-9\.:匹配小数点本身(因为.在正则里是通配符,所以要加转义符\)\d{1,2}:匹配小数点后1位或2位数字$:匹配字符串的结尾,确保后面没有多余字符
测试用例验证
- ✅ 匹配:
90.59、90.5、12.3、99.99 - ❌ 不匹配:
090.59(小数点前三位)、9.59(小数点前一位)、09.59(前导零)、90.(小数点后无数字)、90.567(小数点后三位)
如果你的需求允许小数点前有前导零(比如05.59这种也可以接受),那只需要把正则改成:
^\d{2}\.\d{1,2}$
这个版本会匹配05.59,但依然会排除090.59这种三位前缀的情况。
内容的提问来源于stack exchange,提问作者Stilyan Kolarov
相关产品推荐
相关产品推荐

