我正在寻找一个与以下日期时间格式匹配的正则表达式:
dd-MMM-yyyy HH:mm:ss (15-Sep-2011 16:00:47)
目前我只有日期的正则表达式,如下所示:
^(3[0-1]|2[0-9]|1[0-9]|0[1-9])[\s{1}|\/|-](Jan|JAN|Feb|FEB|Mar|MAR|Apr|APR|May|MAY|Jun|JUN|Jul|JUL|Aug|AUG|Sep|SEP|Oct|OCT|Nov|NOV|Dec|DEC)[\s{1}|\/|-]\d{4}$
关于时间的任何想法部分?
我找到解决方案的人很好。提交任何想要使用它的人。
(3[0-1]|2[0-9]|1[0-9]|0[1-9])[\s{1}|\/|-](Jan|JAN|Feb|FEB|Mar|MAR|Apr|APR|May|MAY|Jun|JUN|Jul|JUL|Aug|AUG|Sep|SEP|Oct|OCT|Nov|NOV|Dec|DEC)[\s{1}|\/|-]\d{4}\s(20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d
答案 0 :(得分:2)
一定是正则表达式吗?
DateTime myDate;
// dd-MMM-yyyy HH:mm:ss (15-Sep-2011 16:00:47)
if (DateTime.TryParseExact(dateAsString,
"dd-MMM-yyyy HH:mm:ss",
new CultureInfo("en-US"),
DateTimeStyles.None,
out myDate))
{ ... }
答案 1 :(得分:0)
呃,在我看来, date 位是很难的:-)但是你可以使用相同的方法。
假设你有两个固定数字,你可以使用类似的东西:
(([01][0-9])|(2[0-3])):[0-5][0-9]:[0-5][0-9]
第一位是稍微棘手的一点,因为你想要一个:
0
或1
后跟数字。2
后跟0
至3
。分钟和秒都是:
0
至5
后跟0
至9
。如果您想允许一位数小时,只需将[01]
替换为[01]?
。
您可能还想考虑人们可能会在月份中输入nov
或OcT
,从而降低您的正则表达式的效用。
这可以通过不区分大小写的版本来解决,这也会减少正则表达式的大小,每月只需要一个字符串。
答案 2 :(得分:0)
正如Joel上面所说,我应该在此处添加我的解决方案。 所以这就是:
(3[0-1]|2[0-9]|1[0-9]|0[1-9])[\s{1}|\/|-](Jan|JAN|Feb|FEB|Mar|MAR|Apr|APR|May|MAY|Jun|JUN|Jul|JUL|Aug|AUG|Sep|SEP|Oct|OCT|Nov|NOV|Dec|DEC)[\s{1}|\/|-]\d{4}\s(20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d
请告诉我它是否有效。