我想形成如下的检查文本: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])))$/,
它没有奏效。 我该如何解决这个问题?
答案 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个作为月份。它只检查您想要的格式是否完全跟随任何数字。