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

quhf5bfb  于 2023-01-14  发布在  其他
关注(0)|答案(3)|浏览(123)

我需要一个正则表达式来验证版本号。
我有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();

我该怎么做呢?

balp4ylt

balp4ylt1#

让我们从最基本的开始。
首先,列出五个组

  1. [0-9]{4}
  2. [0-9]
  3. [0-9]{1,2}
  4. [0-9]{1,4}
  5. RE
    接下来,列出四种变体
  6. [0-9]{4}\.[0-9]
  7. [0-9]{4}\.[0-9]\.[0-9]{1,2}
  8. [0-9]{4}\.[0-9]\.[0-9]{1,2}\.[0-9]{1,4}
  9. [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)?)?)?$
lp0sw83n

lp0sw83n2#

你的正则表达式必须是,

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

DEMO

mklgxw1f

mklgxw1f3#

如果你使用的是c#,那么你可以使用Version.TryParse
样品:

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

相关问题