какой должен быть RegExp для проверки версии приложения? - PullRequest
4 голосов
/ 14 марта 2019

Я застрял в одном RegExp, где мне нужно проверить версию приложения для магазина приложений и магазина игр.Я пробовал несколько 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 ]

5 голосов
/ 14 марта 2019

Вы можете попробовать следующее регулярное выражение

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
5 голосов
/ 14 марта 2019

вы упомянули up to 2-3 decimal, тогда RegExp должно быть этим

^(\d+\.)?(\d+\.)?(\d+\.)?(\*|\d+)?$
4 голосов
/ 14 марта 2019

^\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 голосов
/ 14 марта 2019

Попробуйте

^(\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) ) );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...