如何使用正则表达式模式验证版本号

时间:2019-07-15 15:28:33

标签: javascript regex

对于以下示例,我必须验证版本号模式:

A1
aabc1
AabC134
aabc12.2
aA1.2.3
0.1.1
0.0.2
a.b.c
a.1.2
a.0.0
1.0.0
1.0
1

基本上,它应该允许所有三个部分中的字母数字(用点分隔) 但不能是:

0
0.0.0
000.000.000
0000.00.00

我尝试过此正则表达式,但它允许零:

/([A-Za-z\d]+)?(.*[A-Za-z\d]+)?(.*[A-Za-z\d]+)$

可以对其进行修改以实现上述结果吗?

2 个答案:

答案 0 :(得分:3)

我可能只是使用否定的前瞻来断言没有出现在黑名单中的版本号,否则继续按照您已经在做的事情行事:

 ^(?!^(?:0|0\.0\.0|000\.000\.000|0000\.00\.00)$)[A-Za-z0-9]+(?:\.[A-Za-z0-9]+){0,2}$

Demo

答案 1 :(得分:1)

您可以使用

/^(?![0.]+$)[A-Za-z0-9]+(?:\.[A-Za-z0-9]+){0,2}$/

或者,

/^(?![0.]+$)[A-Z\d]+(?:\.[A-Z\d]+){0,2}$/i

请参见regex demo

详细信息

  • ^-字符串的开头
  • (?![0.]+$)-直到字符串末尾不仅有零/点
  • [A-Za-z0-9]+-一个或多个数字/字母
  • (?:\.[A-Za-z0-9]+){0,2}-.的0、1或2个重复以及1个以上的数字或字母
  • $-字符串结尾

Regex graph

enter image description here