Asp.net 数据注释正则表达式根据之前的 Char 评估 Char



我正在尝试编写一个捕获年份和一周的正则表达式。对于 ASP.net 视图模型。

这是我现在使用的表达式。

[RegularExpression(@"[d]{4}-[0-5]d", ErrorMessage = "Work Week Requires 4 digit year - 2 Week.  e.g. 2019-09")] 

这完成了我想要它做的大部分事情,但在某些情况下它没有处理。

这是我试图捕获/拒绝的内容

2001-01  good
2001-10  good
2001-01  good
2001-10  good
2010-1   good
6502-9   good
4657-09  good
2003-01  good
2056-53  good
2056-54  bad
2068-60  bad 
5416-00  bad 
2015-0   bad
10000-15 would be nice to catch but I'm Ok with this code breaking 8000 years from now 

我已经创建了一个带有此问题的正则表达式 101 https://regex101.com/r/iL5rpY/2

问题

我之前不知道如何根据 Char 评估 Char。

问题

如何创建捕获整数 1 到 53 的所有文本版本的正则表达式?

您可以使用

^0*d{4,5}-0*(?:[1-9]|[1-4]d|5[0-3])$

请参阅正则表达式演示。

  • ^- 字符串的开头
  • 0*- 零个或多个0s
  • d{4,5}- 4 或 5 位数字
  • -- 连字符
  • 0*- 泽尔或更多0s
  • (?:[1-9]|[1-4]d|5[0-3])- 从19的数字,或从14的数字,然后任何数字或5后跟0123
  • $- 字符串结尾。

最新更新