Ce qui est l’expression régulière pour un nombre décimal avec une précision de 2 ?
Exemples valides:
Exemples non valides :
La virgule peut être facultative et entiers peuvent aussi être inclus.
Ce qui est l’expression régulière pour un nombre décimal avec une précision de 2 ?
Exemples valides:
Exemples non valides :
La virgule peut être facultative et entiers peuvent aussi être inclus.
Valide regex jetons de varier en fonction de la mise en œuvre. La plupart des génériques de la forme que je connais serait:
[0-9]+(\.[0-9][0-9]?)?
Le plus compact:
\d+(\.\d{1,2})?
Les deux supposent que vous devez avoir au moins un chiffre avant et un après la virgule.
D'exiger que l'ensemble de la chaîne est un nombre de cette forme, placer l'expression de début et de fin de balises (en Perl):
^\d+(\.\d{1,2})?$
AJOUTÉ: Enveloppé la partie fractionnaire ()? pour la rendre facultative. Être conscient que ce qui exclut les formes telles que des "12." Y compris qui serait plus ^\d+\.?\d{0,2}$.
^[0-9]+(\.[0-9]{1,2})?$
Et puisque les expressions régulières sont une horreur à lire, beaucoup moins de comprendre, ici, c'est le verbose équivalent:
^ # Start of string.
[0-9]+ # Must have one or more numbers.
( # Begin optional group.
\. # The decimal point, . must be escaped,
# or it is treated as "any character".
[0-9]{1,2} # One or two numbers.
)? # End group, signify it's optional with ?
$ # End of string.
Vous pouvez remplacer [0-9]
avec \d
dans la plupart des expression régulière implémentations (y compris les PCRE, le plus commun). J'ai laissé ce qu' [0-9]
que je pense que c'est plus facile à lire.
Aussi, voici le simple script Python que j'ai utilisé pour le vérifier:
import re
deci_num_checker = re.compile(r"""^[0-9]+(\.[0-9]{1,2})?$""")
valid = ["123.12", "2", "56754", "92929292929292.12", "0.21", "3.1"]
invalid = ["12.1232", "2.23332", "e666.76"]
assert len([deci_num_checker.match(x) != None for x in valid]) == len(valid)
assert [deci_num_checker.match(x) == None for x in invalid].count(False) == 0
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.