正则表达式匹配当前年份的日期

时间:2019-07-07 12:59:50

标签: c# .net regex

我刚刚开始学习正则表达式。我在需要的地方为项目用户名创建了一个正则表达式:

  • 2位数字

  • 2位数字

  • 当年的后两位数字

  • 4年后最后一年的最后两位数字

即我需要匹配这样的输出:

23071923

其中:

  • 23是当前日期(dd)

  • 07是月份(mm)

  • 19是当年(YY)

  • 23是4年之后的年份(yy)

但是我很困惑它将如何与当前年份匹配,并且仅采用年份的最后两位数字。以及我如何匹配正则表达式的结尾是正确的,是否在一年中添加了4?

1 个答案:

答案 0 :(得分:0)

您可以使用技巧来将输入的字符串替换为经过修改的字符串,从而进行数学运算:

var x = "23071923";
var x2 = Regex.Replace(x, @"^(\d{2})(\d{2})(\d{2})(\d{2})$", m =>
         m.Groups[1].Value + m.Groups[2].Value + m.Groups[3].Value +
         (int.Parse(m.Groups[3].Value) + 4));
bool is_match = x == x2;