我想以dd-mm-yyyy hh:mm
格式查看日期,现在我正在使用
/^(0[1-9]|1\d|2\d|3[01])\-(0[1-9]|1\d|2\d|3[01])\-(19|20)\d{2}$/
正则表达式以dd-mm-yyyy
格式
但我想查看dd-mm-yyyy hh:mm
格式。
任何人都可以修改dd-mm-yyyy hh:mm
格式的正则表达式吗?
答案 0 :(得分:7)
这是日期格式的正则表达式 但请注意,它接受两个日期 1-12-2011 19:20 和 01-12-2011 19:20。
^([1-9]|([012][0-9])|(3[01]))-([0]{0,1}[1-9]|1[012])-\d\d\d\d [012]{0,1}[0-9]:[0-6][0-9]$
答案 1 :(得分:3)
鉴于日期不规则(每个月的天数不同,取决于月,年和世纪,它们不太适合正则表达式,至少是为了检查有效性。< / p>
例如,正则表达式确保您不会获得2月30日或2月29日(除非年份是4的倍数而不是100的倍数,除非它也是的倍数400)将是真正可怕的。
我建议只使用一个非常简单的正则表达式来检查格式,之类的内容:
\d{2}-\d{2}-\d{4} \d{2}:\d{2}
然后在代码中提取各个字段以进行单独的有效性检查。
正则表达式是一个功能强大的工具,但是,与任何工具一样,您必须知道何时(以及何时不)使用它们。这是真正的工具匠的标志。
在任何情况下,你的正则表达式都会遇到Y2.1K问题。你打到2100的那一刻,它就会停止工作。并且不要以为你有足够的时间,我们认为这也适用于Y2K: - )
答案 2 :(得分:1)
日期格式的正则表达式dd-mm-yyyy hh:mm
^([1-9]|([012][0-9])|(3[01]))\-([0]{0,1}[1-9]|1[012])\-\d\d\d\d\s([0-1]?[0-9]|2?[0-3]):([0-5]\d)$
Javascript示例:
/^([1-9]|([012][0-9])|(3[01]))\-([0]{0,1}[1-9]|1[012])\-\d\d\d\d\s([0-1]?[0-9]|2?[0-3]):([0-5]\d)$/.test('12/12/2017 12:45')
返回true
/^([1-9]|([012][0-9])|(3[01]))\-([0]{0,1}[1-9]|1[012])\-\d\d\d\d\s([0-1]?[0-9]|2?[0-3]):([0-5]\d)$/.test('12/12/2017 12:65')
返回false
答案 3 :(得分:0)
如果您确信它始终是dd
而不是d
等等(mm
vs m
),那么您可以使用:
/\d{2}-\d{2}-\d{4} \d{2}:\d{2}/
但是,如果您不确信它始终为dd
,而可能只是d
,我建议:
/\d{1,2}-\d{1,2}-\d{2,4} \d{1,2}:\d{2}/
我已将会议记录保留为\d{2}
,因为我从来没有看到下午1:05写为1:5。
当然,这只会验证它是否适合正确的格式 - 这不会检查疯狂的日期,例如&#34; 2月99日。&#34;考虑删除这个答案,因为其他人更好。
答案 4 :(得分:0)
这样就可以了:
/^(0[1-9]|1\d|2\d|3[01])-(0[1-9]|1\d|2\d|3[01])-(19|20)\d{2}\s+(0[0-9]|1[0-9]|2[0-3])\:(0[0-9]|[1-5][0-9])$/
检查Regexper以获得解释:)
答案 5 :(得分:0)
这是一个与您的格式完全匹配的正则表达式,请记住,日期和月份不能为00,小时数不能为24,而分钟/秒数不能为60。
/(0[1-9]|[12]\d|3[01])-(0[1-9]|1[0-2])-\d{4} ([01]\d|2[0-3])(:[0-5]\d){2}/gm
作为旁注,无论位置如何,都可以使用它来解析较大字符串中的日期。
答案 6 :(得分:-1)
尝试以下方法:
$value = "22-12-2013 21:30";
if($value=~m/([0-9]{2})-([0-9]{2})-([0-9]{4}) ([0-9]{2}):([0-9]{2})/){
print "Matched\n";
}
else{
print "Not matched...";
}