版本号的正则表达式

我想得到这样的比赛:

3.1.0 10.5.1 0.5 

这可能代表构建版本编号系统。

非比赛:

 3.1. 

我试过这个正则表达式:

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

这只得到0.5而不是10.5.1

那这个呢:

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

这个怎么样?

 ^\d{1,3}\.\d{1,3}(?:\.\d{1,6})?$ 

这将匹配Major.Minor和可选修订版。 Major和Minor可以是1-3位数(0-999),Revision可以是6位数。

有效期:1.1 1.2.3 1.2.123456

无效:1 1.2。 1.2.1234567 1.2。*任何带有字母字符的东西

试试这个:

 [0-9]+\.[0-9]+(?:\.[0-9]+)? 

我认为这应该更有意义:

 ^(?:0|[1-9][0-9]*)(?:\.(0|[1-9][0-9]*))*$ 

如果数字超过1位,则每个数字组件必须以非零开始。

这可能是一个老话题,但我发现了同样的问题,发现了一些更简单的解决方案,所以这可能有助于寻找答案的人。 这个(\[0-9\]+\[\.\]?)+将匹配这些:

 7.1.1 12.1.1.3.12.442.5463.343.44.5 9 11.1.1 11.1.1 

此外,如果有人想要只获得数字(或者在点上分割),这将有助于:

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

( regexhero )

没有彻底测试,但那是人们:-)

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