如何编写满足特定小数格式要求的正则表达式?
正则表达式编写问题及解决方案
当前使用的正则
^([0-9]{1,2})(\.0)|(\.[1-9]{1,2})$
需求规则
- 数字必须为
nn.mm格式,其中nn、mm均为0-9组成的数字 - 小数部分mm不能是
01、02…09这类首位为0且第二位不为0的形式
有效值示例
10.00, 10.10,99.12, 12.99, 10.11, 01.10, 00.00, 00.10, 1.1, 0.9, 0.1, 2.3, 1.10, 9.20, 4.56
无效值示例
00.01, 99.01, 12.09, 10.08, 10.01, 10.02…10.09(问题:小数点后首位为0,第二位非0)
精确规则说明
合法格式
[0-9][0-9].0 //合法 [0-9][0-9].[0-9]0 //合法 [0-9].0 //合法 [0-9].[0-9]0 //合法 [0-9][0-9].[0-9]0 //合法
非法格式
[0-9].0[0-9] //非法 [0-9][0-9].0[0-9] //非法
正确的正则表达式
^\d{1,2}\.(00?|[1-9]\d?)$
正则说明
^\d{1,2}:匹配1-2位数字的整数部分\.:匹配小数点(00?|[1-9]\d?):匹配合法的小数部分,包含两种情况:00?:允许小数部分是单个0或者00[1-9]\d?:允许小数部分是1位非0数字(1-9),或者以非0数字开头的2位数字(10-99),直接排除了01-09这类非法格式
内容的提问来源于stack exchange,提问作者Nancy
相关产品推荐
相关产品推荐

