正则表达式为dd-mm-yyyy hh:mm

时间:2014-04-29 09:22:44

标签: regex validation date

我想以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格式的正则表达式吗?

7 个答案:

答案 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...";
}