Regex supérieur à zéro, avec 2 décimales
j'ai besoin d'un RegEx pour une valeur numérique avec jusqu'à deux décimales au-dessus de zéro et peut ou ne peut pas avoir un zéro dans la colonne uns. Je dois également ajouter....les nombres entiers sont beaux. Voir les somments ci-dessous, mais il pourrait y avoir des espaces blancs en tête ou en queue.
Good values:
.1
0.1
1.12
123.12
92
092
092.13
Error values:
0
0.0
0.00
00
1.234
-1
-1.2
Anything less than zero
19
demandé sur
MikeTWebb
2011-12-23 01:05:48
4 réponses
Que pensez-vous de ceci:
^\s*(?=.*[1-9])\d*(?:\.\d{1,2})?\s*$
explication:
^ # Start of string
\s* # Optional whitespace
(?=.*[1-9]) # Assert that at least one digit > 0 is present in the string
\d* # integer part (optional)
(?: # decimal part:
\. # dot
\d{1,2} # plus one or two decimal digits
)? # (optional)
\s* # Optional whitespace
$ # End of string
Test en Python:
>>> import re
>>> test = [".1", "0.1", "1.12", "123.12", "92", "092", "092.13", "0", "0.0", "0.00", "00", "1.234", "-1", "-1.2"]
>>> r = re.compile(r"^\s*(?=.*[1-9])\d*(?:\.\d{1,2})?\s*$")
>>> for item in test:
... print(item, "matches" if r.match(item) else "doesn't match")
...
.1 matches
0.1 matches
1.12 matches
123.12 matches
92 matches
092 matches
092.13 matches
0 doesn't match
0.0 doesn't match
0.00 doesn't match
00 doesn't match
1.234 doesn't match
-1 doesn't match
-1.2 doesn't match
44
répondu
Tim Pietzcker
2011-12-22 22:20:48
[0-9]+\.[0-9]{1,2}
qui trouvera:
- au moins un nombre
- un point décimal
- Un ou deux chiffres après la virgule.
1
répondu
SpoonNZ
2011-12-22 21:08:33
/^[0-9]*(\.{1})?([0-91-9][1-9])?$/
essayez cela, il transmet tous vos cas
1
répondu
bharath muppa
2014-11-22 19:31:10
cette expression ne permet aucun espace blanc au début et à la fin
/^\d*(?:\.\d{1,2})*$/
-3
répondu
Bikrant Jena
2017-10-20 08:07:58