C# 验证字符串日期,格式为MMDDYY
我必须使用regex验证日期(MMDDYY),我的输入是字符串(对于ex“112517”),没有任何“/” 我已经尝试过了(我已经从正则表达式中删除了“/”,因为我的输入是ex“112517”的字符串) 这不适用于二月或闰年(022920) 有人能在这方面指导我吗 编辑 恕我直言,我知道我们可以通过代码来实现C# 验证字符串日期,格式为MMDDYY,c#,regex,C#,Regex,我必须使用regex验证日期(MMDDYY),我的输入是字符串(对于ex“112517”),没有任何“/” 我已经尝试过了(我已经从正则表达式中删除了“/”,因为我的输入是ex“112517”的字符串) 这不适用于二月或闰年(022920) 有人能在这方面指导我吗 编辑 恕我直言,我知道我们可以通过代码来实现 try { string str = "112192"; DateTime date = DateTime.ParseExa
try
{
string str = "112192";
DateTime date = DateTime.ParseExact(str , "MMddyy", CultureInfo.InvariantCulture);
MessageBox.Show("Correct Date format");
}
catch
{
MessageBox.Show("Wrong Date format");
}
但是我的要求是regex,这样我就可以在配置中传递这个regex。我完全赞同这样的评论,即regex不是实现这一点的方法,而DateTime解析会更好。但是,OP明确指出,他们需要将其作为正则表达式配置值来执行。所以这里是 您需要将其分为多个组,允许其中任何一个组作为备选方案:
然后,您只需将这4个部分组合为备选方案,每端都有锚定(以避免与“hello021418world”匹配),如下所示:“^((01 | 03 | 05 | 07 | 08 | 10 | 12)(0[1-9]| 1\d | 2\d | 3[0-1])\d |(04 | 06 | 09 | 11)(0[1-9]| 1\d | 2\d | d | d | d | d |组)d |为什么需要使用?”?让DateTime结构尝试读取提供适当格式掩码的字符串要简单得多。Regex不知道什么是闰年,一个月有多少天。DateTime更了解它。因此,即使是闰年,也没有2月30日的日期。ParseExact(“112517”,“MMddyy”,null,0)(1)使用一个正则表达式解码站点来理解和简化当前的正则表达式。(2) 决定你到底想要什么。(3) 扩展正则表达式以包含所需的额外位。(4) 试着自己做这项工作,不要让别人帮你写代码。感谢ans,这很有帮助。
try
{
string str = "112192";
DateTime date = DateTime.ParseExact(str , "MMddyy", CultureInfo.InvariantCulture);
MessageBox.Show("Correct Date format");
}
catch
{
MessageBox.Show("Wrong Date format");
}