Je dois valider certaines entrées d'utilisateur, afin de m'assurer que le nombre entré est compris entre 1 et 99 inclus. Celles-ci doivent être des valeurs entières (Integer)
Le précédent 0 est autorisé, mais facultatif
Valeurs valides
Valeurs invalides
Jusqu'à présent, j'ai la regex suivante que j'ai élaborée: ^0?([1-9][0-9])$
Cela autorise un 0 optionnel au début, mais n'est pas correct à 100% car 1
n'est pas considéré comme valide
Des améliorations/suggestions?
De mémoire (non validé)
^(0?[1-9]|[1-9][0-9])$
Voici:
^(\d?[1-9]|[1-9]0)$
Cela signifie que vous autorisez l’un des deux
Pourquoi la regex est-elle une exigence? Ce n'est pas idéal pour les calculs de plage numérique.
Apache commons a IntegerValidator avec les éléments suivants:
isInRange(value, 1, 99)
De plus, si vous utilisez Spring, Struts, Wicket, Hibernate, etc., vous avez déjà accès à un validateur de plage. Ne réinventez pas la roue avec les expressions régulières.
^(([0-9][1-9])|([1-9][0-9])|[1-9])$
devrait marcher
assez tard, mais cela fonctionnera.
^[1-9][0-9]?$
Je pense que ça devrait être comme ...
^(0[1-9]|[1-9][0-9])$
Celui-ci a fonctionné pour moi-même:
([1-9][0-9])|(0?[1-9])
Il vérifie 10-99 ou 1-9 => 1-99 Avec un zéro au début autorisé