我正在尝试创建一个正则表达式来解析和验证 Javascript 中的时间范围。请记住,我只是想解析结构正确的字符串。随后进行有关时间范围的验证逻辑
要求:
- 时间元素始终以 24 小时表示,并且应为 (HH:mm) 格式。
- 时间范围定义为用破折号分隔的 2 个时间元素
- 字符串应至少有一个或多个以逗号分隔的时间范围
- 匹配模式应允许元素之间存在空格
- 经过验证的字符串应该整体匹配或完全匹配失败
我的想法如下:
/((?:[01]\d:[0-5][0-9]|2[0-3]:[0-5][0-9])(?:\s?)-(?:\s?)(?:[01]\d:[0-5][0-9]|2[0-3]:[0-5][0-9])(?:\s?,\s?)?)/g
这似乎满足除规则 5 之外的所有规则。即。如果存在不正确的字符,它们根本不匹配,但表达式整体上不会失败
有什么方法可以将规则 5 嵌入到这个正则表达式中吗?
最佳答案
添加 anchor 以标记字符串的开头和结尾:
^((?:[01]\d:[0-5][0-9]|2[0-3]:[0-5][0-9])(?:\s?)-(?:\s?)(?:[01]\d:[0-5][0-9]|2[0-3]:[0-5][0-9])( ?:\s?,\s?)?)+$
( demo )
然后,抓取整个匹配项,然后按 ,
分割。
关于javascript - 正则表达式匹配时间范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29189181/