我在http://regexlib.com/REDetails.aspx?regexp_id=233找到了一个很好的正则表达式。为了便于参考,它是
^([0]\d|[1][0-2])\/([0-2]\d|[3][0-1])\/([2][01]|[1][6-9])\d{2}(\s([0]\d|[1][0-2])(\:[0-5]\d){1,2})*\s*([aApP][mM]{0,2})?$
我对正则表达式一无所知,所以我根本不知道如何调试它。我从这个jQuery插件http://trentrichardson.com/examples/timepicker/获得了一个日期/时间字符串,格式为:
"09/02/2012 14:51" //Fail
然而,上面是一个失败字符串的例子,虽然它对我来说似乎很好。当我得到当前时间时,它通过:
"12/22/2012 00:01" //Pass
有人能看到这个正则表达式的问题吗?
答案 0 :(得分:2)
正则表达式只接受上午/下午格式的小时数,从0
到12
:
((\s([0]\d|[1][0-2])(\:[0-5]\d){1,2})*\s*([aApP][mM]{0,2})?)
^-------------
This block represents the hours, and its range is 0-12
要考虑一天中的小时,从0到23,请将以下内容添加到小时部分:
(0\d|1[0-9]|2[0-3])
产生最终的正则表达式:
/^([0]\d|[1][0-2])\/([0-2]\d|[3][0-1])\/([2][01]|[1][6-9])\d{2}(\s(([0]\d|[1][0-2])|(0\d|1[0-9]|2[0-3]))(\:[0-5]\d){1,2})*\s*([aApP][mM]{0,2})?$