C#.net中的正则表达式

4

我需要一个函数来验证输入的日期是否符合正确格式。我在网上搜索并获得了一个正则表达式。它工作得很好,除非你输入12/12/YYYY(任何年份),它会显示错误,说这不是一个有效的日期。

bool IsDate(string date)  
        {
            Match dobMatch = Regex.Match(date, @"^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$");
            if (!dobMatch.Success)
            {return true;}
            else
            {return false;}
        }

i

4个回答

6

试试使用 DateTime.TryParse()方法。

这个方法可以帮助您解析日期。如果您想使用特定的文化来解析日期,此方法还允许您传递CultureInfo参数。

或者,如果您真的想要使用正则表达式,请查看http://regexlib.com/ 这是一个综合性的正则表达式库,其中每个正则表达式都有评分。


该函数是否验证日期是否存在,例如2011年2月的30日? - Niranjan Thangaiya
是的,它只能生成(out参数)一个包括闰年在内的有效日期。 - Pieter van Ginkel

2

这个函数是否验证日期是否存在,例如2011年2月的30日? - Niranjan Thangaiya

1

1

正则表达式仅验证字符串中的字符数据,不表示该字符串中的数据实际有效性。

要在 .Net 中将字符串检查为有效日期,请使用以下方法:

DateTime dt;
if (DateTime.TryParse(someString, out dt))
{
   //Parsed as a valid date whose value is now in the variable dt
}
else 
{
   //Not a valid date
}

这个函数是否验证日期是否存在,例如2011年2月的30日? - Niranjan Thangaiya
是的,如果日期无效,则“TryParse”将返回false。 - RobV

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接