用于验证版本号的正则表达式

本文关键字:正则表达式 版本号 验证 用于 | 更新日期: 2023-09-27 18:27:42

我需要一个正则表达式来验证版本号。

我有4种类型的版本号:

  • 2015.1
  • 2015.1.01
  • 2015.1.01.1
  • 2015.1.01.1.RE

  • 第1组:我需要4个数字

  • 2#组:正好是1个数字
  • 第3组#:(1-2)个数字
  • 第4组#:(1-4)个数字
  • 第5#组:仅RE

我已经试过^('d+'.)?('d+'.)?('d+'.)?('d+'.)?('w+)$了,但不起作用。

string Expressao = @"^('d+'.)?('d+'.)?('d+'.)?('d+'.)?('w+)$";
Regex Reg = new Regex(Expressao);
foreach(string rotulo in rotulos)
{
    Match result = Reg.Match(rotulo);
    if (result.Success)
    {
        Console.ForegroundColor = ConsoleColor.Green;
        Console.WriteLine(string.Format("Sucesso! {0}", rotulo), ConsoleColor.Green);
    }
    else
    {
        Console.ForegroundColor = ConsoleColor.Red;
        Console.WriteLine(string.Format("Falha! {0}", rotulo), ConsoleColor.Green);
    }
}
Console.ReadKey();

我该怎么做?

用于验证版本号的正则表达式

让我们从基础知识开始。

首先,列出的五组

  1. [0-9]{4}
  2. [0-9]
  3. [0-9]{1,2}
  4. [0-9]{1,4}
  5. RE

接下来,列出的四种变体

  1. [0-9]{4}'.[0-9]
  2. [0-9]{4}'.[0-9]'.[0-9]{1,2}
  3. [0-9]{4}'.[0-9]'.[0-9]{1,2}'.[0-9]{1,4}
  4. [0-9]{4}'.[0-9]'.[0-9]{1,2}'.[0-9]{1,4}'.RE

最后,把它们放在一起。

^([0-9]{4}'.[0-9]|[0-9]{4}'.[0-9]'.[0-9]{1,2}|[0-9]{4}'.[0-9]'.[0-9]{1,2}'.[0-9]{1,4}|[0-9]{4}'.[0-9]'.[0-9]{1,2}'.[0-9]{1,4}'.RE)$

这给出了一个有效的答案,但不是一个很好的答案。

但只要知道一点RE魔法,你就能创造出一个更好的版本。在这里,我链接了选项,将完整版本链接在一起。

^[0-9]{4}'.[0-9]('.[0-9]{1,2}('.[0-9]{1,4}('.RE)?)?)?$

您的正则表达式必须是

string Expressao = @"^'d{4}'.'d(?:'.'d{1,2}(?:'.'d{1,4}(?:'.RE)?)?)?$";

演示

如果使用c#,则可以使用Version.TryParse.

样品:

string strVersion = "23.1.0";
if(Version.TryParse(strVersion, out Version version)
{
     // valid parsed.
}
else
{
    // invalid version.
}