如何编写正则表达式匹配指定整数和小数位上限的十进制数
正确正则规则及说明
原有正则的问题
你最初写的^[0-9]{7}.[0-9]{9}$存在三个核心错误:
[0-9]{7}是精确匹配7位数字,无法匹配不足7位的整数部分,也没有覆盖整数部分为空的场景- 未转义的
.在正则中匹配任意字符,无法限定仅匹配小数点 [0-9]{9}是精确匹配9位小数,无法匹配不足9位的小数部分
适配给出的合法示例的正则
如果你的场景要求所有匹配内容必须带有小数部分,使用如下规则:^(?:\d{0,7})\.\d{1,9}$
规则解释
\d{0,7}:匹配0到7位整数,支持整数部分为空(适配.8这类写法)\.:转义后仅匹配小数点字符\d{1,9}:匹配1到9位小数,满足最多9位的要求^和$分别匹配字符串开头和结尾,避免内容前后夹杂其他非法字符
支持纯整数场景的扩展正则
如果需要同时支持没有小数部分的纯整数(比如1234567这类值),使用如下规则:^(?:\d{1,7}(?:\.\d{1,9})?|\.\d{1,9})$
验证结果
你给出的所有合法值都可以被上述规则匹配:
1.8:匹配1234567.123456789:匹配.8:匹配0.7:匹配12.78:匹配
内容的提问来源于stack exchange,提问作者VA1267
相关产品推荐
相关产品推荐

