【问题标题】:Asp.net DataAnnotations Regex evaluate a Char based on the Char beforeAsp.net DataAnnotations Regex 根据之前的 Char 评估 Char
【发布时间】:2018-10-28 02:45:13
【问题描述】:

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

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

 [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 

我已经为这个问题创建了一个 regex101 https://regex101.com/r/iL5rpY/2

问题

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

问题

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

【问题讨论】:

标签: regex asp.net-mvc


【解决方案1】:

你可以使用

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

请参阅regex demo

详情

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

【讨论】:

  • 刚刚在此测试过,现在正在生产中部署。这正是我所需要的。
猜你喜欢
  • 2021-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-16
  • 2021-09-17
  • 2023-03-11
  • 1970-01-01
  • 2019-08-22
相关资源
最近更新 更多