我需要一个用于验证日期字符串的正则表达式
YYYY:MM:DD:HH
YYYY:MM:DD:HH:mm
YYYY:MM:DD:HH:mm:ss
表示所有3种格式都有效。 有人可以帮我这个吗?
我有
d\d\d\d:(0\d|1[012]):([012]\d|3[01]):([01]\d|2[0-3])$
YYYY:MM:DD:HH ^\d\d\d\d:(0\d|1[012]):([012]\d|3[01]):([01]\d|2[0-3]):[0-5]\d$
YYYY:MM:DD:HH:MM ^\d\d\d\d:(0\d|1[012]):([012]\d|3[01]):([01]\d|2[0-3]):[0-5]\d:[0-5]\d$
YYYY:MM:DD:HH:MM:SS 这3个正则表达式需要合并为一个
答案 0 :(得分:1)
答案 1 :(得分:1)
我保留了您的年月日表达d\d\d\d:(0\d|1[012]):([012]\d|3[01]):([01]\d|2[0-3])
。由于您的小时和分钟表达式相同:[0-5]\d
我只需要它们显示为零,一次或两次。
结果表达式为:
^\d\d\d\d:(0\d|1[012]):([012]\d|3[01]):([01]\d|2[0-3])(:[0-5]\d){0,2}$
francis-gagnon的此表达式稍作修改,以防止将日期或月份表示为00
的边缘情况。
^\d\d\d\d:(0[1-9]|1[012]):(0[1-9]|[12]\d|3[01]):([01]\d|2[0-3])(:[0-5]\d){0,2}$
如果您还想检查日期是否有效,那么您可以使用类似这个怪物的东西来测试每个日期位置是否有效且时间适合24小时制:
^(?:(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(:|\/|-|\.)(?:0?2\1(?:29)))|(?:(?:(?:1[6-9]|[2-9]\d)?\d{2})(:|\/|-|\.)(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[13-9]|1[0-2])\2(?:29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\d|2[0-8]))))(?::(?:[01]\d|2[0-3]))?(?::[0-5]\d){0,2}$
答案 2 :(得分:0)
\d{4}:[0-1][0-9]:[0-3][0-9](?::[0-5][0-9](?::[0-5][0-9])?)?