C# 版本号的正则表达式

C# 版本号的正则表达式,c#,regex,C#,Regex,我想得到这样的匹配: 3.1.0 10.5.1 0.5 它可能代表版本编号系统 非匹配项: 3.1. 我试过这个正则表达式: [0-9]+\.[0-9]+ 这只会得到0.5,但不会得到10.5.1尝试以下方法: [0-9]+\.[0-9]+(?:\.[0-9]+)? 那么这个呢: \d+(?:\.\d+)+ 我认为这应该更有意义: ^(?:0|[1-9][0-9]*)(?:\.(0|[1-9][0-9]*))*$ 如果数字分量超过1位,则每个数字分量都必须以非零开头。这个怎么样 ^\

我想得到这样的匹配:

3.1.0
10.5.1
0.5
它可能代表版本编号系统

非匹配项:

3.1.
我试过这个正则表达式:

[0-9]+\.[0-9]+
这只会得到
0.5
,但不会得到
10.5.1

尝试以下方法:

[0-9]+\.[0-9]+(?:\.[0-9]+)?
那么这个呢:

\d+(?:\.\d+)+

我认为这应该更有意义:

^(?:0|[1-9][0-9]*)(?:\.(0|[1-9][0-9]*))*$
如果数字分量超过1位,则每个数字分量都必须以非零开头。

这个怎么样

^\d{1,3}\.\d{1,3}(?:\.\d{1,6})?$
这将匹配主要版本、次要版本和可选版本。大调和小调可以是1-3位数(0-999),修订版可以是6位数

有效期: 1.1 1.2.3 1.2.123456

无效: 1. 1.2. 1.2.1234567 1.2.*
任何带有字母字符的内容这可能是一个老话题,但我发现了同样的问题,并找到了更简单的解决方案,因此这可能有助于寻找答案。 这将与以下各项相匹配:

7.1.1
12.1.1.3.12.442.5463.343.44.5
9
11.1.1
11.1.1
另外,如果有人只想获得数字(或者在点上拆分) 这将实现以下目的:

[0-9]+[\.]?? 

()

没有彻底测试它,但就是这样,伙计们:-)

(?\d+)(:\。\d+)(?:\。\d+)(?:\。\d+)?

1<代码>(?:2。这将匹配偶数
10.5。
这是不正确的,它适用于三位数,但我们不能保证即使是这也会匹配
1.2.3.4.5.6
格式(number.number…等)不管有多少个数字/浮点数/数字?@zerkms:比赛将只包含10.5,但是的,我明白你的意思。不幸的是,它可能是010.5.3,所以它实际上不是一个完整的版本系统,但很像它。@lordcolve不要紧。我会投票支持zerkms的答案。;)这正是我想要的,也是你以前的
\d+(?:\.\d+{1,2}
很好,可以作为
\d+(?:\.\d+{1100}
作为一种可接受的方法。你的方法和我的方法有相同的缺陷(即匹配
10.5.
):@Mrchief:不,你的旧方法(带有
*
)也匹配了尾随
。而我的不匹配@zerkms说的是对的。它不匹配
10.5.
等等。
(?<major>\d+)(?<minor>:\.\d+)?(?<build>:\.\d+)?(?<revision>:\.\d+)?