如何修正JSON Schema中支持单数字日/月的日期时间验证正则?
修正后的正则表达式(支持单数字日/月的DD-MM-YYYY HH24:MM:SS格式验证)
直接用下面的正则就能解决单数字日、月无法匹配的问题,同时还修正了原正则里的一些范围漏洞:
"pattern": "^(0?[1-9]|[12][0-9]|3[01])-(0?[1-9]|1[012])-\\d{4} (0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$"
修改说明:
- 日匹配逻辑:用
0?[1-9]替代原写法,0?表示前导0可选,同时保留[12][0-9](10-29)和3[01](30-31)的范围限制,既支持5这种单数字日,也支持05这种两位格式 - 月匹配逻辑:同理用
0?[1-9]统一处理单数字(如3)和带前导0的两位数字(如03),搭配1[012](10-12)覆盖所有有效月份 - 小时范围优化:原正则允许匹配
24-29这类无效小时,现在改成(0?[0-9]|1[0-9]|2[0-3]),精准限制在0-23之间,同时支持单数字小时(如9)和两位格式(如09) - 分钟/秒修正:原正则允许
60-69的无效值,改成[0-5][0-9]后只匹配00-59的有效范围
测试验证:
以下格式都能正常匹配:
- 单数字日+单数字月:
5-3-2023 9:05:08 - 单数字日+两位月:
5-03-2023 09:05:08 - 两位日+单数字月:
05-3-2023 19:05:08 - 标准示例:
18-11-2023 16:03:22
内容的提问来源于stack exchange,提问作者Maddy
相关产品推荐
相关产品推荐

