对于以下示例,我必须验证版本号模式:
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]+)$
可以对其进行修改以实现上述结果吗?
答案 0 :(得分:3)
我可能只是使用否定的前瞻来断言没有出现在黑名单中的版本号,否则继续按照您已经在做的事情行事:
^(?!^(?:0|0\.0\.0|000\.000\.000|0000\.00\.00)$)[A-Za-z0-9]+(?:\.[A-Za-z0-9]+){0,2}$
答案 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个以上的数字或字母$
-字符串结尾