如何修改ASP.NET的此正则表达式以将年份限制为YYYY(MM/-dd/-YYYY)

如何修改ASP.NET的此正则表达式以将年份限制为YYYY(MM/-dd/-YYYY),asp.net,regex,Asp.net,Regex,我从RegEx库复制了这个来验证输入日期。它工作正常,只是它允许yy和yyyy。但是SQL Server拒绝使用yy的日期。所以我想限制这个正则表达式只接受yyyy。如何将其更改为接受YYY而不是yy ^(((((((0?[13578])|(1[02]))[\.\-/]?((0?[1-9])|([12]\d)|(3[01])))|(((0?[469])|(11))[\.\-/]?((0?[1-9])|([12]\d)|(30)))|((0?2)[\.\-/]?((0?[1-9])|(1\d)|(

我从RegEx库复制了这个来验证输入日期。它工作正常,只是它允许yy和yyyy。但是SQL Server拒绝使用yy的日期。所以我想限制这个正则表达式只接受yyyy。如何将其更改为接受YYY而不是yy

^(((((((0?[13578])|(1[02]))[\.\-/]?((0?[1-9])|([12]\d)|(3[01])))|(((0?[469])|(11))[\.\-/]?((0?[1-9])|([12]\d)|(30)))|((0?2)[\.\-/]?((0?[1-9])|(1\d)|(2[0-8]))))[\.\-/]?(((19)|(20))?([\d][\d]))))|((0?2)[\.\-/]?(29)[\.\-/]?(((19)|(20))?(([02468][048])|([13579][26])))))$"

您需要删除
((19)|(20))
之后的
以使这些组成为非可选组


也就是说,你真的相信那个正则表达式吗?我的眼睛都被那些不必要的括号、括号和反斜杠遮住了——如果语法的简洁是任何迹象的话,我猜写这篇文章的人对正则表达式不太了解。

你需要删除
后的
((19)|(20))
,使这些组成为非可选组


也就是说,你真的相信那个正则表达式吗?我的眼睛都被那些不必要的括号、括号和反斜杠遮住了——如果语法的简洁是任何迹象的话,我猜写这篇文章的人对正则表达式不太了解。

你需要删除
后的
((19)|(20))
,使这些组成为非可选组


也就是说,你真的相信那个正则表达式吗?我的眼睛都被那些不必要的括号、括号和反斜杠遮住了——如果语法的简洁是任何迹象的话,我猜写这篇文章的人对正则表达式不太了解。

你需要删除
后的
((19)|(20))
,使这些组成为非可选组


也就是说,你真的相信那个正则表达式吗?我的眼睛被那些不必要的括号、括号和反斜杠所蒙住了——如果语法简洁是任何迹象的话,我猜写这篇文章的人对正则表达式不太了解。

尝试下面的正则表达式来验证
MM/-dd/-yyyy

^(0[1-9]|1[0-2])[\.\-/]?(0[1-9]|1\d|2\d|3[01])[\.\-/](19|20)\d{2}$

尝试下面的正则表达式验证
MM/-dd/-yyyy

^(0[1-9]|1[0-2])[\.\-/]?(0[1-9]|1\d|2\d|3[01])[\.\-/](19|20)\d{2}$

尝试下面的正则表达式验证
MM/-dd/-yyyy

^(0[1-9]|1[0-2])[\.\-/]?(0[1-9]|1\d|2\d|3[01])[\.\-/](19|20)\d{2}$

尝试下面的正则表达式验证
MM/-dd/-yyyy

^(0[1-9]|1[0-2])[\.\-/]?(0[1-9]|1\d|2\d|3[01])[\.\-/](19|20)\d{2}$


你怎么这么快就明白了,我还在为正则表达式中的第一个选项而挣扎:p@aelor:我扫描了正则表达式中的
19
20
。我甚至没有试着去理解它的其余部分。日期验证正则表达式是一场噩梦。@TimPietzcker你有更好的主意吗?在ASPNET中检查日期的CustomValidation或正则表达式验证更好吗?@Chakra:你不能在regex
\d\d[/-]\d\d[/-]\d{4}
中做一个基本的健全性检查,然后使用
Datetime.ParseExact()
检查它是否有效(并且是否在允许的范围内等等)?@TimPietzcker是的,我就是这么做的,我会检验一下。Thankshow你想得那么快吗?我还在为regex中的第一个备选方案苦苦挣扎:p@aelor:我扫描了正则表达式中的
19
20
。我甚至没有试着去理解它的其余部分。日期验证正则表达式是一场噩梦。@TimPietzcker你有更好的主意吗?在ASPNET中检查日期的CustomValidation或正则表达式验证更好吗?@Chakra:你不能在regex
\d\d[/-]\d\d[/-]\d{4}
中做一个基本的健全性检查,然后使用
Datetime.ParseExact()
检查它是否有效(并且是否在允许的范围内等等)?@TimPietzcker是的,我就是这么做的,我会检验一下。Thankshow你想得那么快吗?我还在为regex中的第一个备选方案苦苦挣扎:p@aelor:我扫描了正则表达式中的
19
20
。我甚至没有试着去理解它的其余部分。日期验证正则表达式是一场噩梦。@TimPietzcker你有更好的主意吗?在ASPNET中检查日期的CustomValidation或正则表达式验证更好吗?@Chakra:你不能在regex
\d\d[/-]\d\d[/-]\d{4}
中做一个基本的健全性检查,然后使用
Datetime.ParseExact()
检查它是否有效(并且是否在允许的范围内等等)?@TimPietzcker是的,我就是这么做的,我会检验一下。Thankshow你想得那么快吗?我还在为regex中的第一个备选方案苦苦挣扎:p@aelor:我扫描了正则表达式中的
19
20
。我甚至没有试着去理解它的其余部分。日期验证正则表达式是一场噩梦。@TimPietzcker你有更好的主意吗?在ASPNET中检查日期的CustomValidation或正则表达式验证更好吗?@Chakra:你不能在regex
\d\d[/-]\d\d[/-]\d{4}
中做一个基本的健全性检查,然后使用
Datetime.ParseExact()
检查它是否有效(并且是否在允许的范围内等等)?@TimPietzcker是的,我就是这么做的,我会检验一下。谢谢