【发布时间】:2011-07-08 01:02:23
【问题描述】:
我想得到这样的匹配:
3.1.0
10.5.1
0.5
这可能代表构建版本编号系统。
不匹配:
3.1.
我试过这个正则表达式:
[0-9]+\.[0-9]+
这只会得到0.5,而不是10.5.1。
【问题讨论】:
我想得到这样的匹配:
3.1.0
10.5.1
0.5
这可能代表构建版本编号系统。
不匹配:
3.1.
我试过这个正则表达式:
[0-9]+\.[0-9]+
这只会得到0.5,而不是10.5.1。
【问题讨论】:
这个呢:
\d+(?:\.\d+)+
【讨论】:
\d+(?:\.\d+){1,2} 很好,可以作为一种可接受的方法输入\d+(?:\.\d+){1,100}。
10.5.):regexhero.net/tester/?id=f9dc4e62-06db-4a53-a60a-e3291cf33c29
*)也匹配了尾随.。虽然我的没有
10.5. 等不匹配。
这个怎么样?
^\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]+)?
【讨论】:
(?: 2. 这甚至会匹配 10.5.,这是不正确的
1.2.3.4.5.6,只要格式(number.number...等),无论有多少数字/浮动- 点数/数字有吗?
我认为这应该更有意义:
^(?: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]+[\.]??
【讨论】:
没有彻底测试它,但就是这样:-)
(?<major>\d+)(?<minor>:\.\d+)?(?<build>:\.\d+)?(?<revision>:\.\d+)?
【讨论】: