我想检查yyyy-mm-dd hh:mm(正则表达式)

时间:2014-10-15 04:30:27

标签: javascript html regex

我想形成如下的检查文本:YYYY-MM-DD hh:mm(日期时间) 我发现了这个↓

                    "regex": /^((((19|[2-9]\d)\d{2})[\/\.-](0[13578]|1[02])[\/\.-](0[1-9]|[12]\d|3[01])\s(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]))|(((19|[2-9]\d)\d{2})[\/\.-](0[13456789]|1[012])[\/\.-](0[1-9]|[12]\d|30)\s(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]))|(((19|[2-9]\d)\d{2})[\/\.-](02)[\/\.-](0[1-9]|1\d|2[0-8])\s(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))[\/\.-](02)[\/\.-](29)\s(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])))$/,

有效。 但这个id检查:YYYY-MM-DD hh:mm:ss 并削减:ss部分(我认为)

"regex": /^((((19|[2-9]\d)\d{2})[\/\.-](0[13578]|1[02])[\/\.-](0[1-9]|[12]\d|3[01])\s(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]))|(((19|[2-9]\d)\d{2})[\/\.-](0[13456789]|1[012])[\/\.-](0[1-9]|[12]\d|30)\s(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]))|(((19|[2-9]\d)\d{2})[\/\.-](02)[\/\.-](0[1-9]|1\d|2[0-8])\s(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))[\/\.-](02)[\/\.-](29)\s(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9])))$/,

它没有奏效。 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

如果您想检查字符串是否有效,更好的方法是使用Date.parse()

像这样:

alert(Date.parse("2001-12-20 20:39"));  // returns 1008841140000
alert(Date.parse("2001-12-50 20:39"));  // returns NaN (sometimes?)

如果您想进一步确定日期是否符合该格式,您可以将其输出并与原始格式进行核对,如下所示:

Date.parse(y).strftime("%Y-%m-%d %H:%M") == y

答案 1 :(得分:1)

如果你必须使用正则表达式,这应该有效:

  

/ ^ [0-9] {4} - [0-9] {2} - [0-9] {2} \ S [0-9] {2}:[0-9] {2} /

它对范围没有限制,所以有人可以把14个作为月份。它只检查您想要的格式是否完全跟随任何数字。