簡體   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