用于日期时间验证的正则表达式模式

时间:2016-06-12 04:28:18

标签: regex

我正在使用此正则表达式模式进行日期时间验证:

$regexp = 
"/^([0][1-9]|[12][0-9]|3[0-1])\\/([0][1-9]|1[0-2])\\/(\d{4}) ([0-9]|1[0-2])\\:([0-5][0-9]) (am|pm)$/";

它没有验证这个input(但它应该):

11/06/2016 06:28 pm

它的问题在哪里?

2 个答案:

答案 0 :(得分:1)

您在几小时时遇到错误。你的字符串是两位数小时,但正则表达式是一位数。

preg_match("/([0][1-9]|[12][0-9]|3[0-1])\/([0][1-9]|1[0-2])\/(\d{4}) (0[0-9]|1[0-2]):([0-5][0-9]) (am|pm)/", $time);

http://www.phpliveregex.com/p/g0B

答案 1 :(得分:0)

你可以尝试这个:

'^(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/(19|20)\d{2} (0[0-9]|1[0-2]):[0-5][0-9] (am|pm)$'

它将验证01/01/190031/12/2099(dd-mm-yyyy)之间的日期,时间为hh:mm格式,上午或下午。

或使用以下内容验证除0000以外的所有年份:

'^(0[1-9]|[1-2][0-9]|3[0-1])\/(0[1-9]|1[0-2])\/\d{4}(?<!0000) (0[0-9]|1[0-2]):[0-5][0-9] (am|pm)$'