正则表达式如何校验时间区间重复分组后的必填短横线
问题分析
你原来的正则仅支持「时间-时间」的单区间重复,没有处理多个区间拼接时中间必须带横杠的规则,所以无法匹配多区间横杠拼接的格式。
调整后正则
^((?:MON|TUE|WED|THU|FRI|SAT|SUN),(?:(?:[01][0-9]|2[0-3]):[0-5][0-9])-(?:(?:[01][0-9]|2[0-3]):[0-5][0-9])(?:-(?:(?:[01][0-9]|2[0-3]):[0-5][0-9])-(?:(?:[01][0-9]|2[0-3]):[0-5][0-9]))*;)+$
规则说明
- 先提取公共的时间点匹配规则:
(?:[01][0-9]|2[0-3]):[0-5][0-9],用于匹配00:00到23:59之间的合法时间 - 时间区间拼接逻辑改为:固定第一个
时间点-时间点的基础区间,后续每新增一个区间都必须以-时间点-时间点的格式拼接,完全符合你要求的多区间用横杠连接的规则,既不会遗漏横杠,也能避免出现奇数个时间点的非法格式
匹配测试
你给出的示例字符串MON,00:00-10:00-11:00-13:00-15:00-16:00;TUE,00:00-23:59;可以被该正则正常匹配。
非法格式示例(如缺少区间间隔横杠、时间点数量为奇数)均会被拦截。
内容的提问来源于stack exchange,提问作者Bipin Poul
相关产品推荐
相关产品推荐

