Erm, ce n'est pas vraiment un emploi pour Regexp, mais il fonctionne avec toute façon:
/(\d{2,4}(\.(\d[1-9])|([1-9]\d))?)|[1-9]/
Une évaluation plus stricte serait:
/^([1-9]\d{,3}(\.\d{1,2})?)?|(0\.([1-9]\d?)|(0\.0[1-9]))$/
Avec ne pas accepter zéro de, mais en tenant compte d'un seul décimal: "0.1". Gardez à l'esprit que les décimales sont facultatives.
Je suggère cependant d'utiliser des opérations mathématiques: Convertir flotter puis vérifiez:
if((num > 0) && (num < 100000)) {...}
Vous pouvez utiliser sprintf()
pour obtenir la représentation que vous avez besoin, par exemple en limitant le nombre de décimales, etc.
+1 pour faire de la période et une partie décimale en option - l'OP n'a pas précisé, mais sans cela, une entrée comme « 100 » échouerait. +1 pour dire Regex est le mauvais outil pour analyser les nombres! – Val
Salut, Merci pour votre réponse. J'ai besoin d'une expression régulière car le nombre devrait avoir deux chiffres maximum après la virgule. Donc, 9.9999 est invalide bien qu'il soit entre 0-10000 – Saurabh
Aussi, l'expression que vous avez donnée ne fonctionne pas comme prévu. – Saurabh