[英]Regular expression to validate version numbers
我需要一個正則表達式來驗證版本號。
我有 4 種類型的版本號:
2015.1
2015.1.01
2015.1.01.1
2015.1.01.1.RE
第 1 組#:我正好需要 4 個數字
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();
我怎樣才能做到這一點?
讓我們從基礎開始。
一,列出五組
[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
最后,將它們放在一起。
^([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.