我正在寻找一个匹配版本号的正则表达式模式。
我在这里找到的解决方案并不完全符合我的需求。
我需要该模式对单个数字和后跟点号的数字都有效。
有效数字包括:
我在这里找到的解决方案并不完全符合我的需求。
我需要该模式对单个数字和后跟点号的数字都有效。
有效数字包括:
1
1.23
1.2.53.4
无效的数字包括:
01
1.02.3
.1.2
1.2.
-1
1
1.23
1.2.53.4
无效的数字包括:
01
1.02.3
.1.2
1.2.
-1
^(0|[1-9]\d*)(\.(0|[1-9]\d*)){0,3}$
这个问题可能是一个重复的问题:解析版本号的正则表达式
0.1.2
:^([1-9]\d*|0)(\.(([1-9]\d*)|0)){2}$
1.1.5.0
或者只有1.2
:^([1-9]\d*|0)(\.(([1-9]\d*)|0)){0,3}$
|0
:^([1-9]\d*)(\.(([1-9]\d*)|0)){0,3}$
1.0.0-beta
^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
^
: 匹配行首$
: 匹配行尾(
和 )
: 组合成匹配组([1-9]\d*|0)
: 匹配版本号
[1-9]\d*
: 以1~9开头,后面可以跟任意多个数字|
: 逻辑操作 或0
: 字面量零\.
: 字面量(转义的)句点{2}
: 正好匹配两次{0,3}
: 可以匹配 0~3 次匹配:
0.0.0
0.0.1
0.1.0
1.0.0
1.0.1
1.1.0
1.1.1
0.0.10
0.10.0
10.0.0
0.1.10
1.0.10
1.0.100
0.100.1
100.0.0
1.20.0
不匹配:
0.0.00
0.00.0
00.00.0
0.0.01
0.01.0
01.0.0
0.01.0
01.0.0
00.0.01
这个正则表达式应该有所帮助:
^(([1-9]+\d*\.)+[1-9]+\d*)|[1-9]+\d*$
[1-9]+\d*
表示以非零数字开头,后跟零个或多个数字的序列(([1-9]+\d*\.)+[1-9]+\d*)
捕获了除1之外的所有正确示例,因此我们有一个|
(或),后跟一个[1-9]+\d*
序列。([\*,\^])([\-,\*,\w]+[\.])+(\w)*
例如,对于npm包
"cross-env": "^5.2.0",