Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex dd-mm-yyy-hh:mm的正则表达式_Regex_Validation_Date - Fatal编程技术网

Regex dd-mm-yyy-hh:mm的正则表达式

Regex dd-mm-yyy-hh:mm的正则表达式,regex,validation,date,Regex,Validation,Date,我想检查dd-mm-yyy-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-yyy-hh:mm格式。 是否有人可以将此正则表达式修改为dd-mm-yyy-hh:mm格式?如果您确信它将始终是dd而不是d,如此类推,那么您可以使用: /\d{2}-\d{2}-\d{4}\d{2}:\d{2}/ 但是,如果您不

我想检查dd-mm-yyy-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-yyy-hh:mm格式。
是否有人可以将此正则表达式修改为dd-mm-yyy-hh:mm格式?

如果您确信它将始终是dd而不是d,如此类推,那么您可以使用:

/\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


当然,这将只是验证它或多或少符合正确的格式-这不会检查疯狂的日期,如99年2月。考虑删除此答案,因为其他答案更好。

如果您确信答案将始终是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

当然,这将只是验证它或多或少符合正确的格式-这不会检查疯狂的日期,如99年2月。考虑删除此答案,因为其他答案更好。

这样可以:

/^(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])$/
查看解释:

这样就可以了:

/^(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])$/
查看解释:

尝试以下操作:

$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...";
}
请尝试以下操作:

$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...";
}
由于日期是不规则的,每个月的天数根据月份、年份和世纪的不同而不同,因此它们并不适合正则表达式,至少在检查有效性时是这样

例如,正则表达式确保除非年份是4的倍数,否则不会得到2月30日或2月29日,除非年份也是400的倍数,否则不会得到100的倍数,这将是非常可怕的

我建议只使用一个非常简单的正则表达式来检查格式,例如:

\d{2}-\d{2}-\d{4} \d{2}:\d{2}
然后提取各个字段以在代码中进行单独的有效性检查

正则表达式是一个功能强大的工具,但与任何工具一样,您必须知道何时使用和何时不使用它们。这是一个真正的工具匠的标志

无论如何,你的正则表达式都有Y2.1K问题。你一到2100,它就会停止工作。不要认为你有足够的时间,我们认为对于Y2K也是如此:-

鉴于日期是不规则的,每个月的天数随月、年和世纪的不同而变化,它们并不适合正则表达式,至少在检查有效性方面是如此

例如,正则表达式确保除非年份是4的倍数,否则不会得到2月30日或2月29日,除非年份也是400的倍数,否则不会得到100的倍数,这将是非常可怕的

我建议只使用一个非常简单的正则表达式来检查格式,例如:

\d{2}-\d{2}-\d{4} \d{2}:\d{2}
然后提取各个字段以在代码中进行单独的有效性检查

正则表达式是一个功能强大的工具,但与任何工具一样,您必须知道何时使用和何时不使用它们。这是一个真正的工具匠的标志


无论如何,你的正则表达式都有Y2.1K问题。你一到2100,它就会停止工作。不要认为您有足够的时间,我们认为对于Y2K也是如此:-

这里有一个用于这种日期格式的Regexp。 但请注意,它同时接受日期1-12-2011 19:20和01-12-2011 19:20


下面是这种日期格式的Regexp。 但请注意,它同时接受日期1-12-2011 19:20和01-12-2011 19:20


日期格式dd-mm-yyy-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][012]\-\d\d\d\d\s[0-1]?[0-9][0-3]:[0-5]\d$/。测试'12/12/2017 12:45'返回真值


/^[1-9][012][0-9][3[01]\-[0]{0,1}[1-9][012]\-\d\d\d\d\s[0-1]?[0-9][0-3]:[0-5]\d$/。test'12/12/2017 12:65'返回false

日期格式dd mm yyy 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][012]\-\d\d\d\d\s[0-1]?[0-9][0-3]:[0-5]\d$/。测试'12/12/2017 12:45'返回真值


/^[1-9][012][0-9][3[01]\-[0]{0,1}[1-9][012]\-\d\d\d\d\s[0-1]?[0-9][2][0-3]:[0-5]\d$/。test'12/12/2017 12:65'返回false

这里有一个与您的格式完全匹配的正则表达式,请记住,日和月不能是00,小时不能是24,分/秒不能是60


作为旁注,为了从更大的字符串中解析日期,无论位置如何,都可以使用它。

这里有一个与您的格式完全匹配的正则表达式,请记住,天和月不能是00,小时不能是24,分/秒不能是60


作为旁注,无论位置如何,都可以使用此选项,以便从较大的字符串中解析日期。

date example=22-12-2013 21:30fr

om datetime import datetime datetime.strptime2014,%I要检查输入类型22-12-2013 21:30,以验证格式是否不是dd mm yyyy hh:mm,就像我使用var date\u regex=/^0[1-9]| 1\d | 2\d | 3[01]\-0[1-9]| 1\d | 2\d | 3[01]\-19\20\d{2}$/;如果date_regex.testdateval{要测试dateval格式dd mm yyyyd是否允许1-12-2010类似日期?我将执行该RegExp,但我需要知道您是否希望01或1以哪种语言被允许?您的日期是以什么格式?是否为字符串,一些日期时间类型如果你想得到好的帮助,请在你的问题上投入一些时间,并请在你的问题上添加相关代码,不要将其放入注释中。日期示例=22-12-2013 21:30 From DateTime import DateTime DateTime。strTime2014,%I想检查输入类型22-12-2013 21:30以验证格式是否与我一样是dd-mm yyy hh:mm使用var date|regex=/^0[1-9]| 1\d | 2\d | 3[01]\-0[1-9]| 1\d | 2\d | 3[01]\-19 | 20\d{2}$/;if!date u regex.testdateval{要测试dateval格式dd mm yyyyd是否允许1-12-2010类似日期?我将执行该RegExp,但我需要知道您是否希望01或1以哪种语言被允许?您的日期是以什么格式?是否为字符串,一些日期时间类型如果你想得到好的帮助,请在你的问题上投入一些时间,并请为你的问题添加相关代码,不要将其放入注释中。你能给我一个测试这个常规表达式的日期示例吗?你的第二个捕获组应该是0[1-9]| 1[012]在一些地区,00:00和24:00都是有效的时间Stema:很好的观点-更新我的答案;Jan:在一些地区,甚至26:00都是有效的时间表达式,但我们应该考虑OP的用例,而不是所有的可能性。你能给我一个日期示例来测试这个常规表达式吗0[1-9]|1[012]为了反映月份。在某些地区,00:00和24:00都是有效的时间Stema:很好的观点-更新我的答案;Jan:在某些地区,甚至26:00都是有效的时间表达式,但我们应该考虑OP的用例,而不是所有的概率。这意味着您的模式匹配,但其中没有与主题中的任何内容匹配的捕获组ct字符串。当我测试/\d{2}-\d{2}-\d{4}-\d{2}:\d{2}/表达式时,我得到了上面的信息。你能解决它吗这意味着你的模式匹配,但其中没有与主题字符串中的任何内容匹配的捕获组。当我测试/\d{2}-\d{4}\d{2}-\d{2}:\d{2}/表达式中,然后我得到上面的信息你能解决它吗99-99-9999 99:99不是一个真正合适的日期99-99-9999 99:99不是一个真正合适的日期请先看这个问题之前已经回答过了,显然,你可以在这里添加你的答案。但是你需要在回答之前理解一些要点。首先,不要添加答案之前添加了相同的代码或建议。第二,如果用户特别询问了问题以及他需要解决什么问题,则不要添加过于复杂的答案。第三,如果您想对答案或问题提出任何建议,则可以添加注释。@ankitsuthar,标记为正确的答案无效对于我来说,请尝试一个像“01-02-2016 28:61”这样的例子。注意,小时和分钟不正确标记为正确的正则表达式将返回true,这是不正确的。您可以使用它来尝试。请先看这个问题在回答之前,显然,您可以在这里添加您的答案。但在回答之前,您需要了解一些要点。首先,不要添加以前使用相同代码或建议添加的答案。其次,如果用户特别询问了问题以及他需要解决什么问题,不要添加过于复杂的答案。第三,如果您想对答案或问题提出任何建议,可以添加注释。@ankitsuthar,答案是ked as correct不适用于我,请尝试使用“01-02-2016 28:61”之类的示例。注意,小时和分钟不正确标记为correct的正则表达式将返回true,这是不正确的。您可以使用它来尝试。这将不适用于小时和分钟不正确的日期字符串,例如“01-02-2016 28:61”,我已发布了“为meThis工作”无法处理时间和分钟不正确的日期字符串,例如“01-02-2016 28:61”,我已发布了为我工作的日期字符串