Expression régulière Gamme avec décimale 0.1 - 7.0
J'ai besoin d'une expression régulière qui doit valider le point décimal ainsi que de la plage. Totalement 3 nombre devrait être présent y compris le point et la valeur doit être supérieure à 0.0. Cela signifie que la plage valide est comprise entre 0,1 à 7.0.
J'ai utilisé les regex suivante: ^\\d{1,1}(\\.\\d{1,2})?$
Il fonctionne bien sauf pour la gamme de validation. De quoi ai-je besoin de changer?
- Je recommande de ne pas utiliser une expression régulière pour cette tâche, si possible. (E. g. utiliser seulement comme la première étape si à tous.)
- Votre regex permet d'utiliser des entiers (
5
) et des nombres décimaux avec une précision plus élevée (0.11
) qui ne devrait pas être autorisé en fonction de votre texte de la question. Que voulez-vous vraiment? if(s.matches("^\\d{1,1}(\\.\\d{1,2})?$") && Double.valueOf(s) >= 0.1 && Double.valueOf(s) <= 7.0) { ... }
Vous devez vous connecter pour publier un commentaire.
Regexes sont notoirement mauvaises à la validation des plages de numéros. Mais c'est possible. Vous avez à briser le numéro de série, de la textuelle la représentation de ces nombres:
Comme un one-liner:
En Java:
|
manquant entre le deuxième et le troisième alternative.Del
une fois, trop souvent, lors de la suppression des retours à la ligne à partir de la version détaillé :). Merci pour remarquer.(?:...)?
.?
pour faire le zéro en option. Je suppose que vous voudrez peut-être lire un regex tutoriel de se familiariser avec certains des plus élémentaires regex concepts 🙂