与MySQL时间戳格式匹配的正则表达式;Y-M-D H:M:S“;

与MySQL时间戳格式匹配的正则表达式;Y-M-D H:M:S“;,mysql,regex,Mysql,Regex,我试图创建一个正则表达式来匹配MySQL时间戳格式的日期字符串,例如“2012-07-16 02:04:33” 这并不像听起来那么容易,例如,你不应该以2月30日结束 我知道有更简单的方法可以做到这一点,但我取决于能否传递字符串和正则表达式来计算该字符串 我很乐意接受任何建议 您应该分两步完成,而不是尝试使用非常复杂的正则表达式 步骤1:使用正则表达式检查格式是否正确。 使用类似 /^\d\d\d\d-(\d)?\d-(\d)?\d\d\d:\d\d:\d\d$/g 第2步:如果匹配,请在PHP

我试图创建一个正则表达式来匹配MySQL时间戳格式的日期字符串,例如“2012-07-16 02:04:33”

这并不像听起来那么容易,例如,你不应该以2月30日结束

我知道有更简单的方法可以做到这一点,但我取决于能否传递字符串和正则表达式来计算该字符串


我很乐意接受任何建议

您应该分两步完成,而不是尝试使用非常复杂的正则表达式

步骤1:使用正则表达式检查格式是否正确。 使用类似

/^\d\d\d\d-(\d)?\d-(\d)?\d\d\d:\d\d:\d\d$/g


第2步:如果匹配,请在PHP中使用类似于
strotime()
的东西(或使用您使用的任何语言的日期时间函数进行解析),并检查结果是否有效,以消除2月30日之类的日期。

正则表达式:

/^(((\d{4})(-)(0[13578]|10|12)(-)(0[1-9]|[12][0-9]|3[01]))|((\d{4})(-)(0[469]|1‌​1)(-)([0][1-9]|[12][0-9]|30))|((\d{4})(-)(02)(-)(0[1-9]|1[0-9]|2[0-8]))|(([02468]‌​[048]00)(-)(02)(-)(29))|(([13579][26]00)(-)(02)(-)(29))|(([0-9][0-9][0][48])(-)(0‌​2)(-)(29))|(([0-9][0-9][2468][048])(-)(02)(-)(29))|(([0-9][0-9][13579][26])(-)(02‌​)(-)(29)))(\s([0-1][0-9]|2[0-4]):([0-5][0-9]):([0-5][0-9]))$/

他做这项工作。感谢您的输入。

这应该适用于2019-04-30或2019-04-30 12:12:12

/^([1-2][0-9]{3})-([0-1][0-9])-([0-3][0-9])(?:( [0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/

它还具有不验证0000-00-00的优点。嗯,这不是我真正想要的。我通常同意这种方法,但我需要能够将正则表达式与字符串一起传递。您将遇到太多的情况。1.经过一顿谷歌之后,我找到了这头regex的野兽:
//(2)经过一顿谷歌之后,我发现了这头兽是一个regex的野兽:
/(
/((({{4})4(((({{d{{4})4{{4})(0[13578[13578]0[13578]10 12478)10 12410 124;10 124;10124;10;10 124;10;10 124;10;12;12)等等等等等,还有,还有,还有,还有还有还有,<<<<
例例,还有,<代码>例,还有,<代码>和(<代码>闰,还有,<代码>的问题,还有,<代码>的问题,还有,<代码>的问题,还有,<代码>和<<<<<<<<<<<<<代码>的问题,还有<<|([02468][048]00()(02)((29)(([13579][26]00-([0-9][0-9][0][48]([0-9][0-9][2468][048]([0-9][0-9][2468][048]([0-9][0-9][0-9][13579][26])([0-9][0-9][0-9][0-9][0-4]):([0-5][0-9][0-9]):([0-5][0-9][0-9])//代码>。我不知道这是怎么回事,但我最初的测试日期不正确。示例:很高兴看到您发布了解决问题的答案,以帮助下一个伙伴!使用日期时间字符串“2013-11-27 14:43:29”时,此答案不正确codepad.viper-7.com/sOTV9U–编码器是正确的。它确实失败了,有几个日期包括“2013-11-27 14:43:29”。我发现了一些打字错误,并修复了它:<代码>和我发现了一些打字错误,我发现了一些打字错误,并修复了它:<代码>和我发现了一些打字错误和我发现了一些固定::<代码>和我发现了几几个打字错误,并修复了::<代码>和我发现了几几几几个打字错误和我发现了::((((((((([d{{{{{{00 0 0 0 0 0{{{4{{{{{{{{{00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0 0 0 0 0 0 0 0 0 0 0.1-1-9[1-1-1-9[1-1-1-9[1-9[1-9[1-9[1[1[1-9[1[1[1-9[1-9([13579][26]00)((02)((29))|([0-9][0-9][0][48)((02)((29))|([0-9][0-9][2468][048)((02)((29))|([0-9][0-9][13579][26]((02)((29))(\s)([0-1][0-9]| 2[0-4]):([0-5][0-9]):([0-5][0-9])$/
谢谢henrikstroem。这帮了我很多忙!!:)顺便说一句,我从
0000-01-01 00:00:00
一直到
2015-07-01 00:00:00:00
(总共大约737000个日期字符串)。我使用Carbon库生成了日期,它通过了,因此似乎可以很好地处理闰年。正则表达式本身是正确的,但当我复制粘贴它并试用时,它不起作用!在测试了一段时间后,您的代码似乎包含了一些html实体,如
&zwnj;
&8203;