Expression régulière Simple pour un nombre décimal avec une précision de 2
Qu'est-ce que l'expression régulière pour un nombre décimal avec une précision de 2?
Des exemples valides:
123.12
2
56754
92929292929292.12
0.21
3.1
Invalide exemples:
12.1232
2.23332
e666.76
Le point décimal peut être en option, et les nombres entiers peuvent également être inclus.
- Connexes: pour les décimales avec millième séparateur, voir stackoverflow.com/questions/16148034/...
- La meilleure réponse est ici: stackoverflow.com/a/39399503/715269
Vous devez vous connecter pour publier un commentaire.
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:
Le plus compact:
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 du formulaire):
AJOUTÉ: Enveloppé la partie fractionnaire en ()? 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}$
.Ajouté:
Utilisez ce format
^\d{1,6}(\.\d{1,2})?$
pour arrêter la répétition et de donner une restriction à la partie entière de la valeur décimale.^\d+(?:\.\d{1,2})?$
^\d{12}
, mais si vous voulez jusqu'à 12,^\d{1,12}
+
. Essayez^\d{1,12}(\.\d{1,2})?$
pour permettre 1-12 chiffres suivis par une option de délai et jusqu'à plus de deux chiffres.-?
, comme dans-?\d+(\.\d{1,2})?
. Je n'ai pas de négatifs ou de départ avec un point décimal ceux qui n'étaient pas dans le cas des OP question, même si elles sont certainement valables pour une plus générique format de nombre. Les commentaires thread ici donne quelques façons de le gérer ".21".Et depuis les expressions régulières sont une horreur à lire, beaucoup moins de comprendre, ici, c'est le verbose équivalent:
Vous pouvez remplacer
[0-9]
avec\d
dans la plupart des expression régulière implémentations (y compris PCRE, le plus commun). J'ai laissé ce que[0-9]
que je pense que c'est plus facile à lire.Aussi, ici, est la simple script Python que j'ai utilisé pour le vérifier:
+
après la première parenthèse fermante,^([0-9]{0,3})(\.[0-9]{1,2})?$
\\.
au lieu de\.
parce que.
ressemblera il fonctionne, mais correspond à un caractère (et pas seulement de la virgule). Par exemple, les deux1z23
et1.23
peut être considéré comme valable que si vous n'avez pas la fuir1.23
format des nombres, certainement pasD'inclure une option de signe et de refuser de tels chiffres
015
(qui peut être confondu avec des nombres octaux) écrire:Pour les nombres qui n'ont pas de séparateur de milliers, j'aime ce simple, compact regex:
ou, pour ne pas être limité à une précision de 2:
Les derniers matchs
1
100
100.
100.74
100.7
0.7
.7
.72
Et il ne correspond pas à une chaîne vide (comme \d*.?\d* serait -)
Je l'utiliser une à deux décimales:
(^(\+|\-)(0|([1-9][0-9]*))(\.[0-9]{1,2})?$)|(^(0{0,1}|([1-9][0-9]*))(\.[0-9]{1,2})?$)
passe:
.25
0.25
10.25
+0.25
ne passe pas:
-.25
01.25
1.
1.256
Va faire des choses comme
12.
accepté. Ce n'est pas ce qui est communément acceptée, mais si dans le cas où vous avez besoin d'être “flexible”, c'est une façon d'aller. Et bien sûr[0-9]
peut être remplacé par\d
, mais je suppose que c'est plus lisible de cette façon.Essayer cette
Il permettra de positif et de négatif aussi des signes.
Principale réponse est FAUSSE, car elle valide
5.
ou5,
entréesce code poignée (mais dans mon exemple, les nombres négatifs sont interdits):
résultats sont ci-dessous:
En général, c'est à dire illimité décimales:
^-?(([1-9]\d*)|0)(.0*[1-9](0*[1-9])*)?$
.Ne vous avez besoin de prendre le
e
danse666.76
en compte?Avec
ajouter ma réponse trop, quelqu'un pourrait trouver utile, ou peut-être corriger la mienne aussi.
6....7.8.9
est un nombre valide à l'aide de cette expression.Cette travaillé avec moi:
Groupe 1 est le votre nombre à virgule et groupe 2 est la fraction seulement.
J'ai essayé avec mon projet.
Cela permet numéros avec
+ | -
signes en tant que bien.Chrome 56 est de ne pas accepter ce type de modèles (Chrome 56 est accpeting 11.11. une supplémentaire .) avec numéro de type, le type d'utilisation que du texte comme un progrès.
Cela permettra décimal avec l'exponentiation et jusqu'à 2 chiffres ,
Démo
1.2e-10
([0-9]+)?
est mieux écrit\d*
. Maintenant, il ne correspond pas à10e3
. Et l'OP veut correspondance jusqu'à 2 chiffres.fonction de valider n'importe quel nombre décimal météorologiques nombre a décimales ou pas, il va dire: "bon Nombre" d'autres sages ", Veuillez saisir uniquement des chiffres dans la quantité de zone de texte." message d'alerte apparaîtra.
Merci... 🙂