【问题标题】:Regex matching current year date正则表达式匹配当前年份日期
【发布时间】:2019-07-07 12:59:50
【问题描述】:

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

  • 2 位数字

  • 月份的两位数

  • 当前年份的后 2 位数字

  • 终于在4年后一年的最后2位数字

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

23071923

地点:

  • 23 是当前日期(dd)

  • 07 是月份(毫米)

  • 19 是当前年份(YY)

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

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

【问题讨论】:

  • 请发布minimal, complete and verifiable example,其中包含您的输入和预期输出。
  • 以及年份的最后 2 位数字,最后是年份的最后 2 位数字 ???
  • 我想要从 2019 年开始的当前年份的最后两位数字仅为 19。4 年后的最后两位数字。即2019+4= 2023 . 从 2023 年起只需要 23 个。
  • 请用您的拥有需要更新您的问题。并且正则表达式不做任何数学运算。
  • 现在更清晰了。输入字符串的例子是什么?

标签: c# .net regex


【解决方案1】:

您可以使用该技巧将输入字符串替换为修改后的字符串,这会进行数学运算:

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;

【讨论】:

    猜你喜欢
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 2019-06-01
    • 2011-08-24
    • 1970-01-01
    相关资源
    最近更新 更多