Javascript 这个日期/时间的正则表达式有什么问题
我在伦敦找到了一个好的正则表达式。为了便于参考,它是Javascript 这个日期/时间的正则表达式有什么问题,javascript,jquery,regex,Javascript,Jquery,Regex,我在伦敦找到了一个好的正则表达式。为了便于参考,它是 ^([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插件中得到一个日期/时间字符串,格式如下: "09/02/2012 14:51" //Fail 然而,上面是一个失败字符串的例
^([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插件中得到一个日期/时间字符串,格式如下:
"09/02/2012 14:51" //Fail
然而,上面是一个失败字符串的例子,尽管我觉得这很好。当我获得当前时间时,它将通过:
"12/22/2012 00:01" //Pass
有人看到这个正则表达式有问题吗?正则表达式只接受am/pm格式的小时数,从
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})?$
学习正则表达式-这是一个很有价值的工具。我认为你的例子是交换的。失败的是第一个。哦,糟了。。我在看另一个接受24小时时间的正则表达式,甚至没有意识到我选择了一个不接受24小时时间的正则表达式。谢谢