繁体   English   中英

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

[英]Regular expression to validate version numbers

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

我有 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();

我怎样才能做到这一点?

您的正则表达式必须是

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

演示

让我们从基础开始。

一,列出五组

  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)?)?)?$

如果您使用的是 c# 那么您可以使用Version.TryParse

样本:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM