日期:2014-05-18  浏览次数:20970 次

求一个正则,验证yyyy-MM-dd
问个正则问题``
可以输入合法的年月日,只需精确到日
4位年,1-12的月,1-31的日
2012-04-23 可以
2012-4-3 可以
2012-14-3 错误
2012-4-33 错误

Regex regex = new Regex(@"");
Match match = regex.Match(mydate);
if (match.Success)
{
  success = true;


可以直接在这个代码上改```

------解决方案--------------------
\d{4}-[0-9]?[1-9]-([0-2]\d|3[0-1])
------解决方案--------------------
不必用正则啊,这样就行了:
C# code
        string s = "2012-04-23";
        DateTime dt;
        if (DateTime.TryParseExact(s, "yyyy-MM-dd", null, DateTimeStyles.None, out dt))
//验证通过

------解决方案--------------------

日期用正则反而不好

C# code

  DateTime dt;
  bool flag = DateTime.TryParse("时间字符串", out dt);
  
  if(flag)
  {
     //符合
  }
  else
  {
     //不符合
  }

------解决方案--------------------
^((?!0000)[0-9]{4}-((0?[1-9]|1[0-2])-(0?[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)|([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)$

说实话,这不是正则干的活
------解决方案--------------------
探讨
不必用正则啊,这样就行了:

C# code
string s = "2012-04-23";
DateTime dt;
if (DateTime.TryParseExact(s, "yyyy-MM-dd", null, DateTimeStyles.None, out dt))
//验证通过

------解决方案--------------------
探讨
日期用正则反而不好


C# code

DateTime dt;
bool flag = DateTime.TryParse("时间字符串", out dt);

if(flag)
{
//符合
}
else
{
//不符合
}