只是想验证以下日期07/03 / 2017-15:54:42以确保使用此格式但无法找到有效的正则表达式
答案 0 :(得分:0)
我倾向于使用DateTime::createFromFormat来获取字符串和格式字符串,如果方法返回FALSE,则可以检查DateTime::getLastErrors。它比使用正则表达式有一些优势 - 它可以检查闰年和所有其他日期异常。
答案 1 :(得分:0)
一种非常简单且不准确的方法是使用如下所示的正则表达式:
/\d{2}\/\d{2}\/\d{4}-\d{2}:\d{2}:\d{2}/
它将简单地验证字符串是否具有由斜线,冒号和破折号分隔的正确数字位数。描述了构建正则表达式的更复杂方法here。您可以使用它并添加自己的部分进行时间验证,但使用四位数年份的模式,月份格式和日期格式的模式。
更可靠的方法是尝试从字符串中创建DateTime
对象:
DateTime::createFromFormat('d/m/Y-H:i:s', '17/03/2017-15:54:42')
/* DateTime {#173
+"date": "2017-03-17 15:54:42.000000",
+"timezone_type": 3,
+"timezone": "Asia/Jerusalem",
}
*/
如果您使用错误的字符串进行尝试,则会得到false
结果:
DateTime::createFromFormat('d/m/Y-H:i:s', '17.03/2017-15:54:42')
// false
答案 2 :(得分:0)
你要求的正则表达式可能是这样的:
(\d{2}\/){2}\d{4}-(\d{2}:){2}\d{2}
但是使用DateTime::createFromFormat()
具有as exposed