用于验证版本号的正则表达式
本文关键字:正则表达式 版本号 验证 用于 | 更新日期: 2023-09-27 18:27:42
我需要一个正则表达式来验证版本号。
我有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();
我该怎么做?
让我们从基础知识开始。
首先,列出的五组
[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)?)?)?$
您的正则表达式必须是
string Expressao = @"^'d{4}'.'d(?:'.'d{1,2}(?:'.'d{1,4}(?:'.RE)?)?)?$";
演示
如果使用c#,则可以使用Version.TryParse.
样品:
string strVersion = "23.1.0";
if(Version.TryParse(strVersion, out Version version)
{
// valid parsed.
}
else
{
// invalid version.
}