如何编写仅当数字含小数点时允许前导零的正则表达式
符合需求的正则表达式实现
最终正则
^-?(0|[1-9]\d*|0?\.\d+|[1-9]\d*\.\d+)$
Python 调用示例
import re # 校验示例 is_valid = bool(re.match(r'^-?(0|[1-9]\d*|0?\.\d+|[1-9]\d*\.\d+)$', "0.123"))
规则拆解
-?:匹配可选的负号,支持负数校验0:匹配单独的整数0[1-9]\d*:匹配无小数点的整数,要求首字符非0,杜绝01、001这类带前导零的非法整数0?\.\d+:匹配以.或0.开头的合法小数,覆盖.01、0.01这类允许前导零的小数场景[1-9]\d*\.\d+:匹配非0开头的普通小数,如1.2、123.45,同时过滤001.1、00.1这类前导零超过1个的非法小数
校验结果验证
匹配通过场景
- 0.01
- 1
- 1.2
- .01
- -0.1
- -1
不匹配场景
- 1.2.3
- 01
- 001.1
- 00.1
内容的提问来源于stack exchange,提问作者user2896120
相关产品推荐
相关产品推荐

