簡體   English   中英

版本號的正則表達式

[英]Regular expression for version numbers

我想得到這樣的比賽:

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\]+\[\.\]?)+將匹配這些:

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+)?

嘗試這個:

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

我認為這應該更有意義:

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

如果超過 1 位,每個數字分量都必須以非零開頭。

我推薦這個:

^\d+(?:\.\d+){2}$

{2} 確保 10.5 等版本不匹配

^ 和 $ 將“保護”版本的開頭和結尾,防止出現以下情況:

A10.5.1
10.5.
10.5.1A
(\d+\.){1,3}\d+

匹配以下
快捷版(64 位)RTM 15.0.4223.1

15.0.4223.1
15.0.4
15.0

不匹配以下

15
15.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM