年度/日历周的正则表达式

时间:2011-01-21 11:13:31

标签: .net regex validation

我的RegularExpression技能需要改进。所以也许有人可以帮助我回到正轨。

背景:我有一个TextBox,用户可以在其中输入年/周组合,而不是输入日期。我将服务器端的转换为日期实例(该周的最后一天)。现在我必须使用RegularExpressionValidator来验证它。

格式:对于2010年和日历周32,示例格式可以是10w32。数字 w 是大小写的。周数应在1到53之间。 其他有效的例子:

99w02  -> 1999 week 2
2W53   -> 2002 week 53
2001w1 -> 2001 week 1

提前谢谢。

1 个答案:

答案 0 :(得分:2)

怎么样

\d{1,4}[wW](\d|([0-4]\d)|(5[0123]))

? (当然,逃脱了。)

说明:

  • 1-4位数
  • w或W
  • 一个数字......
  • ...或两位数,第一个是0-4,第二个是任何数字
  • ...或5后跟0,1,2或3

交替构造中的某些分组可能是不必要的 - 这也可能有效:

\d{1,4}[wW](\d|[0-4]\d|5[0123])

...测试一下。

这是完全未经测试的,请注意......单元测试是你的朋友,并仔细审查。

在开头使用^,在结尾使用$强制正则表达式匹配整个字符串,例如

^\d{1,4}[wW](\d|[0-4]\d|5[0123])$