[英]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.