用于应用程序版本验证的RegExp应该是什么?

时间:2019-03-14 06:18:14

标签: javascript regex

我被困在一个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个小数点后才有效。我不知道该如何修改。

请帮助。

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) ) );