小张伸了伸懒腰,软件终于上线了,准备下班。看到发布包很多软件版本实在太乱了,心想不能让它这么乱,小张打算整理一下。
小张简单地列出版本列表:1
2
3
4
5
6
7v1.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
3v1.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
。