0

我有以下一段 javascript 来比较 DD-MM-YYYY HH-MM-SS 日期格式,但由于某种原因它不起作用。谁能看到它有什么问题?(请注意,日期和时间之间有空格。

new RegExp (/^(0?[1-9]|[12][0-9]|3[01])[\/\-\.](0?[1-9]|1[012])[\/\-\.](\d{4})\s([0-1][0-9]|[2][0-3]):([0-5][0-9]):([0-5][0-9])$/)

我与此 regExp 匹配的实际数据如下所示: 1-1-2013 0:00:00 1/1/2013 0:00:00 01-01-2013 00:00:00 01/01 /2013 00:00:00 31-12-2013 23:59:59 这些是最大范围。请注意,从 0:00:00 到 9:59:59 的时间是这样记录的,对于 10:00:00,它是 6 位数字,最好它也可以处理闰年。

4

2 回答 2

1

看起来时间的分隔符是:而不是-。尝试:

new RegExp (/^(0?[1-9]|[12][0-9]|3[01])[\/\-\.](0?[1-9]|1[012])[\/\-\.](\d{4})\s([0-1][0-9]|[2][0-3])\-([0-5][0-9])\-([0-5][0-9])$/)
于 2013-07-16T15:25:29.000 回答
0

您应该保持小事并测试小块正则表达式。

您希望一个小时允许一个数字,但您忘记将它放在您的正则表达式中。它应该是这样的:

([0-9]|[0-1][0-9]|[2][0-3])

现在它起作用了:

regex = new RegExp (/^(0?[1-9]|[12][0-9]|3[01])[\/\-\.](0?[1-9]|1[012])[\/\-\.](\d{4})\s([0-9]|[0-1][0-9]|[2][0-3]):([0-5][0-9]):([0-5][0-9])$/)
match = '1-1-2013 0:00:00'.match(regex)
console.log(match)
于 2013-07-17T07:43:19.043 回答