正则表达式无法匹配单独日期区间,求月度日期验证方案优化
月度日期输入验证正则优化方案
原正则无法匹配单独的日期区间(如「10-27」),核心问题是其结构要求必须以单个日期开头,单独的区间不符合这个起始规则。
优化后的正则表达式
^(?:(?:[1-9]|[12][0-9]|3[01])(?: *- *(?:[1-9]|[12][0-9]|3[01]))?)(?: *, *(?:[1-9]|[12][0-9]|3[01])(?: *- *(?:[1-9]|[12][0-9]|3[01]))?)*$
修改说明
- 调整起始部分结构:将原本仅允许单个日期的起始规则,改为允许单个日期或日期区间作为起始内容,直接解决单独区间无法匹配的问题。
- 保留原有逗号分隔格式的支持,确保混合单个日期与区间的格式(如「1-30, 27, 3, 13」)依然能正常匹配。
支持的输入格式示例
- 单独日期区间:
10-27、3-15 - 单个日期:
5、28 - 混合格式:
1-30, 27, 3, 13、10-15, 20, 25-31
内容的提问来源于stack exchange,提问作者abmarket
相关产品推荐
相关产品推荐

