我必须使用正则表达式验证日期(MMDDYY),我的输入是字符串(对于ex“112517”)没有任何“/”。
我试过这个(我从正则表达式中删除了“/”,因为我的输入是ex“112517”的字符串)
^(|(0[1-9])|(1[0-2]))((0[1-9])|(1\d)|(2\d)|(3[0-1]))((\d{2}))$
这不适用于2月或闰年(022920)
有人可以指导我。
修改
得到应有的尊重,我知道我们可以通过代码
来实现try
{
string str = "112192";
DateTime date = DateTime.ParseExact(str , "MMddyy", CultureInfo.InvariantCulture);
MessageBox.Show("Correct Date format");
}
catch
{
MessageBox.Show("Wrong Date format");
}
但我的要求是正则表达式,因此我可以在配置中传递此正则表达式。
答案 0 :(得分:0)
我完全赞同Regex不是这样做的评论,并且DateTime Parse会更好。但是,OP明确表示他们需要将其作为Regex配置值。所以这里......
您需要将其分组,允许任何这些组作为替代方案:
我不在我的电脑上,但这些团体看起来像这样:
然后你只需将这4个部分组合起来作为替代,每一端都有锚点(以避免匹配“hello021418world”),如下所示:“^((01 | 03 | 05 | 07 | 08 | 10 | 12)(0 [ 1-9] | 1 \ d | 2 \ d | 3 [0-1])\ d \ d | ...(04 | 06 | 09 | 11)(0 [1-9] | 1 \ d | 2 \ d | 30)\ d \ d | 第3组 | GROUP4 )$”
。