Je recherche un modèle de regex qui correspondrait à un numéro de version.
Les solutions que j'ai trouvées ici ne correspondent pas vraiment à ce dont j'ai besoin. p>
J'ai besoin du motif pour être valide pour Les nombres simples et aussi pour les nombres suivis de. p>
Les numéros valides sont P>
01 1.02.3 .1.2 1.2. -1
3 Réponses :
Cette regex devrait aider: p>
ci-dessous est l'explication. P>
la première partie ^ (([[1-9] + \ d * \.) + [1-9] + \ d *) | [1-9] + \ d * $ code> p >
[1-9] + \ d * code> signifie une séquence qui commence par un nombre non nulle, suivi de zéro ou plusieurs numéros p>
(([1-9] + \ d * \.) + [1-9] + \ d *) code> attrape tous vos exemples corrects, à l'exception de 1 fort>. Nous avons donc un | code> (ou), suivi d'un [1-9] + \ d * code> séquence. p>
Mais si je testais contre 01, il capture le 1 afin qu'il devienne valide .. même pour 1.2., Il capture le 1.2
Essayez d'utiliser le modificateur "A" ("ancrated"). Voir l'exemple ici: Regex101.com/r/kk0eqt/1
Merci beaucoup pour ça. Enfin, je veux savoir si nous pouvons généraliser la règle de 0Number n'est pas valide. Exemple: 1.2.3.04
considérer: p>
briser cela: p>
Une partie de cette syntaxe diffère en fonction de ce que vous utilisez le moteur de Regex. Par exemple, utilisez-vous celui de Perl, PHP, JavaScript, C #, MySQL ...? P>
Dans mon expérience, les numéros de version ne correspondent pas au format soigné que vous avez décrit. P>
Spécifiquement, vous obtenez des valeurs telles que Si vous validez les données existantes, assurez-vous que vos critères correspondent aux conditions que vous avez décrites. En particulier, si vous suivez "la version sémantique", sachez que les versions qui sont des zéros sont légales, de sorte que les "étiquettes supplémentaires pour les métadonnées de pré-libération et de construction sont disponibles comme extensions au format Major.Minor.Patch. . ", et que" 1 "n'est pas un numéro de version légale. P>
Soyez averti que ce qui précède correspondra également aux numéros de version stupidement longs tels que Ceci modifie le Aussi, si vous voulez que les zéros soient légaux, mais seulement s'il n'y a pas d'autres numéros (donc Cette question peut également être une duplication: une regex pour le numéro de version analysant a > p> ^ [1-9] \ d * (\. [1-9] \ d *) * $ code> p>
^ code> - Commencez au début de la chaîne. Li>
[1-9] code> - exactement l'un des caractères 1 à 9. li>
\ d * code> - Plus de chiffres. LI>
( code> - début de certaines choses supplémentaires facultatives li>
\. code> - un point littéral. li>
[1-9] code> - exactement l'un des caractères 1 à 9. li>
\ d * code> - Plus de chiffres. LI>
) code> - fin des trucs supplémentaires facultatifs. LI>
* code> - il peut y avoir n'importe quel numéro de ces trucs supplémentaires facultatifs. LI>
$ code> - et finissez à la fin de la chaîne. LI>
ul>
0.3rc5 code>, 12.0-beta6 code>, 2019.04.15-alpha4.5 code>, 3.1stable code>, v6.8pl7 code> et plus. p>
1.2.3.4.5.6.7.8.9.10.11.12.13.14 Code>. Pour éviter cela, vous pouvez le limiter, comme vous le souhaitez: P>
^ [1-9] \ d * (\. [1-9] \ d *) {0,3} $ code> p> P>
* code> pour "n'importe quel nombre de points et numéros supplémentaires facultatifs" sur une plage de zéro à trois. Donc cela accepterait 1 code>, 1.2 code>, 1.2.3 code> et 1.2.3.4 code>, mais pas 1.2.3.4.5 code>. P>
0.3 code>, 1.0.1 code>), alors il devient un peu plus complexe : p>
^ (0 | [1-9] \ d *) (\. (0 | [1-9] \ d *)) {0,3} $ code> p> P> P>
Vous la chèvre. Je suis revint ici pour poser des questions sur ce que je veux accepter 1.0.1, mais refuser 1.01.1 et constaté que vous avez déjà mentionné cela dans votre commentaire.
Quel moteur de regex utilisez-vous? Cela fonctionne pour moi, voir: Regex101.com/r/bopker/1
Nevermind pour mon commentaire supprimé. Je l'ai réparé à ma fin
pour le paquet NPM p> ([\ *, \ ^]) ([\ -, \ *, \ w] + [\.]) + (\ w) * code>
S'il vous plaît prendre un moment pour lire via le Aide d'édition dans le centre d'aide . Le formatage sur le débordement de la pile est différent des autres sites.
Cela n'autorise pas une version correcte comme "5.2.0", ce doit être par exemple. "^ 5.2.0" ou "~ 5.2.0"
Veuillez noter les mises à jour de ma réponse - il y a un certain nombre de GOTCHAS avec des formats de version à analyses que vous voudrez peut-être faire attention.