我正在使用此正则表达式模式进行日期时间验证:
$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
它的问题在哪里?
答案 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);
答案 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/1900
到31/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)$'