4
votes

que devrait être le RegExp pour la validation de version d'application?

Je suis coincé dans un RegExp où je dois valider la version de l'application pour l'App Store et le Play-Store. J'ai essayé plusieurs RegExp mais aucun d'entre eux ne m'est utile. Voici l'exemple qui a réussi le test

Version de l'application jusqu'à 2-3 décimales

1.0 // pass

1.0.0 // pass

1.0.0.0 // fail

a.0 // fail

1 // pass

J'ai trouvé un RegExp [0-9] + \ . [0-9] + \. [0-9] + \. [0-9] + mais cela ne sera valide que si j'ai entré 4 décimales. Je ne sais pas comment modifier cela.

Veuillez aider.


0 commentaires

4 Réponses :


4
votes

^\d+(?:\.\d+){0,2}$

Cela commencera par un nombre ( \ d est le même que [0-9] ), puis zéro ou plusieurs virgules décimales suivis de plusieurs nombres.

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

Si vous souhaitez limiter le nombre de chiffres, vous pouvez changer le \ d + en \ d {n, m} (remplacer n avec le nombre minimum de chiffres et m avec le nombre maximum de chiffres).

Le + est le même que {1,} qui signifie "un ou plusieurs".


3 commentaires

Selon OP: 1.0.0.0 // échouer mais votre code renvoie true


@MaheerAli OP modifier les exigences de la question - dans cette version cet exemple passe.


@MaheerAli Le PO a changé les exigences après avoir répondu à la question. Je l'ai mis à jour maintenant.



3
votes

Essayez

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

^(\d+\.){0,2}\d+$


1 commentaires

Cela acceptera des choses comme 1. et 1.a - Il n'est pas clair d'après la question si c'est acceptable.



5
votes

vous avez mentionné jusqu'à 2-3 décimales alors le RegExp doit être ce

^(\d+\.)?(\d+\.)?(\d+\.)?(\*|\d+)?$


0 commentaires

5
votes

Vous pouvez essayer l'expression régulière suivante

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


1 commentaires

Vous avez oublié d'échapper au . . Ainsi, des éléments comme 1 ° 1 et 1M1 passeront également le test ...