Quelle est l'expression régulière d'une décimale avec une précision de 2?
Exemples valides :
123.12
2
56754
92929292929292.12
0.21
3.1
Exemples non valides:
12.1232
2.23332
e666.76
Le point décimal peut être facultatif et des nombres entiers peuvent également être inclus.
Réponses:
Les jetons d'expression régulière valides varient selon l'implémentation. Un formulaire générique est:
Plus compact:
Les deux supposent que les deux ont au moins un chiffre avant et un après la décimale.
Pour exiger que la chaîne entière soit un nombre de ce formulaire, encapsulez l'expression dans des balises de début et de fin telles que (sous la forme de Perl):
Pour faire correspondre les nombres sans premier chiffre avant les nombres décimaux (
.12
) et entiers ayant une période de fin (12.
) tout en excluant la saisie d'une seule période (.
), essayez ce qui suit:Ajoutée
Enveloppé la portion fractionnée
()?
pour la rendre facultative. Sachez que cela exclut des formes telles que l'12.
inclusion qui ressemblerait davantage^\d+\\.?\d{0,2}$
.Ajoutée
Permet
^\d{1,6}(\.\d{1,2})?$
d'arrêter la répétition et de restreindre une partie entière de la valeur décimale.la source
-?
, comme dans-?\d+(\.\d{1,2})?
. Je n'ai pas inclus de négatifs ou en commençant par un point décimal car ceux-ci n'étaient pas dans la question du PO, bien qu'ils soient certainement valables pour un format numérique plus générique. Le fil des commentaires donne ici quelques façons de gérer ".21".Et comme les expressions régulières sont horribles à lire, et encore moins comprises, voici l'équivalent détaillé:
Vous pouvez le remplacer
[0-9]
par\d
dans la plupart des implémentations d'expressions régulières (y compris PCRE , la plus courante). Je l'ai laissé[0-9]
car je pense que c'est plus facile à lire.En outre, voici le script Python simple que j'ai utilisé pour le vérifier:
la source
+
après la première paren de fermeture,^([0-9]{0,3})(\.[0-9]{1,2})?$
\\.
place de\.
car.
il semblerait que cela fonctionne, mais correspond à n'importe quel caractère (pas seulement la décimale). Par exemple, les deux1z23
et1.23
peuvent être considérés comme valides si vous n'y échappez pasPour inclure un signe moins facultatif et pour interdire des nombres comme
015
(qui peuvent être confondus avec des nombres octaux), écrivez:la source
Pour les nombres qui n'ont pas de séparateur de milliers, j'aime cette expression régulière simple et compacte:
ou, pour ne pas se limiter à une précision de 2:
Ce dernier correspond à
1
100
100.
100,74
100,7
0,7
0,7
0,72
Et il ne correspond pas à une chaîne vide (comme \ d *.? \ D * le ferait)
la source
J'utilise celui-ci pour jusqu'à 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
la source
Fera des choses comme
12.
acceptées. Ce n'est pas ce qui est communément accepté, mais si vous devez être «flexible», c'est une façon de procéder. Et bien sûr,[0-9]
peut être remplacé par\d
, mais je suppose que c'est plus lisible de cette façon.la source
Essaye ça
Cela permettra également des signes positifs et négatifs.
la source
La réponse principale est FAUX car elle valide
5.
ou5,
saisitce code le gère (mais dans mon exemple les nombres négatifs sont interdits):
les résultats sont ci-dessous:
la source
la source
En général, c'est-à-dire nombre de décimales illimité:
^-?(([1-9]\d*)|0)(.0*[1-9](0*[1-9])*)?$
.la source
Ne vous devez prendre
e
ene666.76
compte?Avec
la source
en ajoutant ma réponse aussi, quelqu'un pourrait la trouver utile ou peut-être aussi la mienne.
la source
Cela a fonctionné avec moi:
Le groupe 1 est votre nombre flottant et le groupe 2 est la fraction uniquement.
la source
J'en ai essayé un avec mon projet. Cela permet également aux numéros avec des
+ | -
signes.la source
Chrome 56 n'accepte pas ce type de modèles (Chrome 56 accepte 11.11. Un supplémentaire.) Avec le numéro de type, utilisez type comme texte comme progression.
la source
Cela permettra décimal avec exponentiation et jusqu'à 2 chiffres,
Démo
la source
1.2e-10
([0-9]+)?
est mieux écrit\d*
. Maintenant ça ne correspond plus10e3
. Et OP veut faire correspondre jusqu'à 2 chiffres.La fonction validera n'importe quel nombre décimal. Le numéro météorologique a des décimales ou non, il dira "Numéro correct" autrement "Veuillez entrer uniquement les nombres dans la zone de texte du montant." un message d'alerte apparaîtra.
Merci... :)
la source