匹配版本号

小张伸了伸懒腰,软件终于上线了,准备下班。看到发布包很多软件版本实在太乱了,心想不能让它这么乱,小张打算整理一下。

插图

小张简单地列出版本列表:

1
2
3
4
5
6
7
v1.0.1
v1.0.2
v1.0.2a
v1.0.3
1.0.3.beta
V1.0.4
1.0.5

这么多版本号那就先匹配vx.x.x格式吧。

1
^v\d+(\.\d+){2}$

看了看感觉只匹配了

1
2
3
v1.0.1
v1.0.2
v1.0.3

并没有匹配到V1.0.4,小张又写了起来。

1
^[vV]\d+(\.\d+){2}$

这次可以了吧,摸了摸自己没有头发的头,突然摸到了一根头发,小张想了想,把那根头发拔下来的同时想到了1.0.5也要匹配上,甭管它有没有v和V前缀,我都要匹配。

1
^(\d+(\.\d+){2})|([vV]\d+(\.\d+){2})$

看了看还是有些不简洁,又重新写了

1
^[vV]{0,1}\d+(\.\d+){2}$

这时候小张又摸了摸自己的头,不错不错,顺便也记下笔记好下班。

  • ^匹配输入字符串开始的位置。
  • $匹配输入字符串结尾的位置。
  • \d匹配一个数字字符。
  • {0,1}循环语句,最多循环一次。
  • {2}循环语句,循环两次。
  • +循环语句循环一次或多次。
  • |逻辑或语句,用于多条匹配语句组合。
  • [vV]{0,1}表示v或V可任意出现一个或可不出现。
  • \d+表示数字至少出现一次,比如1,10,100,1000。
  • (\.\d+){2}表示循环匹配两次括号内的语句,如.1.10.11.11