我需要一个正则表达式来验证版本号。
我有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();
我该怎么做呢?
3条答案
按热度按时间balp4ylt1#
让我们从最基本的开始。
首先,列出五个组
[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)?)?)?$
lp0sw83n2#
你的正则表达式必须是,
DEMO
mklgxw1f3#
如果你使用的是c#,那么你可以使用Version.TryParse。
样品: