求一个日期时间的正则表达式。谢谢!

wangweintk 2006-03-09 11:55:43
本人初学,请大家多帮忙。

目的:想用一个TexBox来让用户输入规定格式的日期时间,格式要求为:

"2006-08-12 18:00:00"
或"2006-8-12 18:0:00"(也就是说用户少输入一个前面的0是可以的)

请教:
1.正则表达式怎么写(最好能对时间和日期的合法性也有验证)?
2.今天心情好嘛?(纯属玩笑,祝大家天天开心!)

...全文
2960 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
deng2001 2006-03-09
  • 打赏
  • 举报
回复
正则俺不是很熟,发个以前写过的。高手不要笑。
a=obj.value.match(/^[1-9][0-9]{3}-(0?[1-9]|1[0|1|2])-(0?[1-9]|[1|2][0-9]|3[0|1])\s(0?[1-9]|1[0-9]|2[0-3]):(0?[0-9]|[1|2|3|4|5][0-9]):(0?[0-9]|[1|2|3|4|5][0-9])$/);
if (a==null)
{
alert('请输入正确的日期与时间。格式:年-月-日 时:分:秒');
}
.net和js通用
iuhxq 2006-03-09
  • 打赏
  • 举报
回复
http://www.google.com/search?hl=zh-CN&q=%E6%97%A5%E6%9C%9F%E8%BE%93%E5%85%A5%E6%8E%A7%E4%BB%B6&lr=
nameone 2006-03-09
  • 打赏
  • 举报
回复
UP
lovvver 2006-03-09
  • 打赏
  • 举报
回复
日期数据检查包括格式和合法性两个检查,光是正则表达式怕是检查不全,正则表达式只能检查格式,对于合法性,还是要另外检查。
public bool IsDate(string str)
{
try
{
string regextext = @"\d{4}(?:-\d{1,2}){0,2}";
Regex regex = new Regex (regextext,RegexOptions.None );
if(regex.IsMatch (str.Trim ()))
{
char sep = '-';
if(str.Trim().IndexOf ("-") != -1)
sep = '-';
else if (str.Trim ().IndexOf ("/") != -1)
sep = '/';
else if (str.Trim ().IndexOf (".") != -1)
sep = '.';
char[] chr = new char []{sep};
string[] arr = str.Trim ().Split (chr);
DateTime dt = new DateTime (Convert.ToInt32 (arr[0]),Convert.ToInt32 (arr[1]),Convert.ToInt32 (arr[2]));
return arr.Length == 3 & Convert.ToInt32 (dt.Year) == Convert.ToInt32 (arr[0]) & Convert.ToInt32 (dt.Month) == Convert.ToInt32 (arr[1]) & Convert.ToInt32 (dt.Day) == Convert.ToInt32 (arr[2]);
}
}
catch
{
return false;
}
return false;
}
wangweintk 2006-03-09
  • 打赏
  • 举报
回复
解决了,感谢。
deng2001 2006-03-09
  • 打赏
  • 举报
回复
(?:(?:(?:(?:19|20)(?:(?:[02468][048])|(?:[13579][26]))-0?2-29))|(?:\d{4}-0?(?!(?:[4|6|9]-31)|(?:2-29)|(?:11-31)|(?:2-30)|(?:2-31))((?!0|(?:1[3-9]))(?:1?[0-9])-(?!0|(?:3[2-9]))(?:[1-3]?[0-9]))))\s+(?!(?:2[4-9]))(?:[1-2]?[0-9]):0?0:0?0

收藏
rexsp 2006-03-09
  • 打赏
  • 举报
回复
合法性也检查了,包括润年。
rexsp 2006-03-09
  • 打赏
  • 举报
回复
把以前写的一个正则改了改,应该可以用了

(?:(?:(?:(?:19|20)(?:(?:[02468][048])|(?:[13579][26]))-0?2-29))|(?:\d{4}-0?(?!(?:[4|6|9]-31)|(?:2-29)|(?:11-31)|(?:2-30)|(?:2-31))((?!0|(?:1[3-9]))(?:1?[0-9])-(?!0|(?:3[2-9]))(?:[1-3]?[0-9]))))\s+(?!(?:2[4-9]))(?:[1-2]?[0-9]):0?0:0?0
deng2001 2006-03-09
  • 打赏
  • 举报
回复
把你正确的格式贴上来。
wangweintk 2006-03-09
  • 打赏
  • 举报
回复
我用的是C#。

deng2001(基督山伯爵)试过了,编译没问题,但正确的格式也通不过。

请大家多帮忙,一解决就结贴。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧