我被困在一个RegExp中,我需要在其中验证应用商店和Play商店的应用版本。我已经尝试了几种RegExp,但是它们对我都没有用。这是通过测试的示例
应用程序版本(最多2-3个小数点)
1.0 // pass
1.0.0 // pass
1.0.0.0 // fail
a.0 // fail
1 // pass
我找到了一个RegExp [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+
,但这仅在输入4个小数点后才有效。我不知道该如何修改。
请帮助。
答案 0 :(得分:5)
您已经提到up to 2-3 decimal
,那么RegExp
必须是这个
^(\d+\.)?(\d+\.)?(\d+\.)?(\*|\d+)?$
答案 1 :(得分:5)
您可以尝试以下正则表达式
let reg = /^[0-9]((\.)[0-9]){0,2}$/
console.log(reg.test('1.0')) //true
console.log(reg.test('1.1.0')) //true
console.log(reg.test('1')) //true
console.log(reg.test('1.')) //false
console.log(reg.test('1.a')) //false
console.log(reg.test('1.1.1.1')) //false
答案 2 :(得分:4)
^\d+(?:\.\d+){0,2}$
这将以一个数字(\d
与[0-9]
相同)开始,然后是零个或多个小数点,后跟多个数字。
var input = [
"1.0", // pass
"1.0.0", // pass
"1.0.0.0", // fail
"a.0", // fail
"1", // pass
"1.",
"1.a"
]
var regex = /^\d+(?:\.\d+){0,2}$/;
input.forEach(function(item) {
console.log(item, regex.test(item));
});
如果要限制位数,可以将\d+
更改为\d{n,m}
(用最小位数替换n
,用最大位数替换m
)位数)。
+
与{1,}
相同,表示“一个或多个”。
答案 3 :(得分:3)
尝试
^(\d+\.){0,2}\d+$
let versions= [
"1.0",
"1.0.0",
"1.0.0.0",
"a.0",
"1",
]
versions.forEach(v=> console.log(v, /^(\d+\.){0,2}\d+$/.test(v) ) );