3
votes

Regex Recherche du nombre décimal correct 1,0 OU 1,99 à 10,0

J'essaie de trouver un nombre compris entre 1.0 et 1.10 mais qui ne sera pas supérieur à 10.0

Voici ce que j'ai jusqu'à présent,

^0$|^[1-9]{1}\.[0-9]{1}$|[1-9]{1}\.[0-9]{2}$^10\.0$

celui-ci fonctionne pour 1.55

J'ai essayé d'ajouter un OU à l'expression, pour trouver par exemple 1.5 mais malheureusement il ne trouvera pas 1.55 il continue cependant à trouver 1.5 code >

Voici ma tentative de déclaration ou

^0$|^[1-9]{1}\.[0-9]{2}$|^10\.0$


Voici le site avec lequel j'essaye.


2 commentaires

Est-ce que 1.55 est un nombre valide dans la plage? Si tel est le cas, je suggérerais de ne pas utiliser de regex ici, comparez simplement les valeurs directement dans la langue de votre application.


Votre plage n'est pas claire 1.0 OU 1.99 À 10.0 ... entre 1.0 ou 1.10 mais ne sera pas supérieur à 10.0


3 Réponses :


3
votes

Vous avez oublié l'alternance entre [0-9] {2} $ et ^ 10 , si vous ajoutez | comme expression régulière de départ fait, cela devrait fonctionner.

^0$|^[1-9]\.[0-9]$|[1-9]\.[0-9]{2}$|^10\.0$

De plus, {1} ici n'est pas obligatoire, car il est répété une seule fois. Cette expression régulière est plus courte:

^0$|^[1-9]{1}\.[0-9]{1}$|[1-9]{1}\.[0-9]{2}$|^10\.0$


2 commentaires

Votre modèle ne semble pas tout à fait correct, cliquez ici .


merci @TimBiegeleisen, je mets | au mauvais endroit, j'ai édité ma réponse



1
votes

Vous pouvez utiliser l'expression régulière suivante qui n'accepte que des nombres avec 2 décimales au maximum:

^[0-9](?:\.[0-9]+)?$|^10(?:\.0+)?$

Elle acceptera également 10,00 et tous les entiers sans décimales de 0 à 10.

Démo: https://regex101.com/r/tT1dX7/19

Si vous souhaitez ajouter des nombres avec un maximum de 2 décimales comprises entre 0 et 1 à votre plage initiale ( 1-10 -> 0-10)

^[0-9](?:\.[0-9]{1,2})?$|^10(?:\.00?)?$

Démo: https://regex101.com/r/tT1dX7/20

Maintenant si vous souhaitez accepter plus de 2 décimales dans votre plage ( 0-10 )

^0$|^[1-9](?:\.[0-9]{1,2})?$|^10(?:\.00?)?$

Démo: https://regex101.com/r/tT1dX7/21


0 commentaires

0
votes

Peut-être que ^ (?: 1 \. (?: 0 \ d | [1-9] \ d) | (?: [2-9] | 10) \. 00) $

 ^     
 (?:
      #  1.00  -  1.99
      1
      \.
      (?:
           0 \d 
        |  [1-9] \d 
      )
   |  
      #  2.00  -  10.00
      (?:
           [2-9] 
        |  10
      )
      \.00
 )
 $


0 commentaires