Nombre décimal expression régulière, où les chiffres après la virgule est facultative
J'ai besoin d'une expression régulière qui permet de valider un certain nombre, mais ne l'exige pas un chiffre après la virgule.
ie.
123
123.
123.4
seraient tous être valide
123..
serait invalide
Tout serait grandement apprécié!
- La meilleure réponse est ici: stackoverflow.com/a/39399503/715269
Vous devez vous connecter pour publier un commentaire.
Utiliser les éléments suivants:
^
- Début de la ligne;\d*
- 0 ou plus de chiffres;\.?
Facultatif dot (échappé, parce que dans la regex,.
est un caractère spécial);\d*
- 0 chiffres ou plus (la partie décimale);$
À la fin de la ligne.Cela permet .5 décimal plutôt que d'exiger le zéro, comme dans 0,5
\d+\.?\d*
, aurait égalé '3.45' dans 'cow3.45tornado'!/^\d*\.?\d+$/
qui obligerait un chiffre après le point décimal.Un ou plusieurs chiffres (
\d+
), facultatif période (\.?
), zéro, un ou plusieurs chiffres (\d*
).En fonction de votre utilisation ou de moteur d'expressions régulières, vous pouvez avoir besoin d'ajouter de début/fin de ligne ancres:
Debuggex Démo
.
et la chaîne vide.Vous avez besoin d'une expression régulière comme suit pour le faire correctement:
La même expression avec des espaces blancs, à l'aide de l'étendue modificateur (appuyée par Perl):
ou avec les commentaires:
Par exemple, elle correspond à:
Et rejettera ces numéros:
La plus simple des solutions peut mal refuser de numéros valides ou correspondre à ces numéros.
^A?(B|C)$
. Auparavant, il a été écrit comme^A?B|C$
qui signifie en fait(^A?B)|(C$)
ce qui était erroné. Remarque:^(A?B|C)$
est également incorrect, parce que cela signifie réellement^((A?B)|(C))$
qui ne correspondent pas "+.5".Essayer cette regex:
123.
J'ai fini par utiliser les éléments suivants:
Cela rend non valides suivantes:
.3
Quelle langue? En Perl style:
^\d+(\.\d*)?$
Je pense que c'est le meilleur (correspond à toutes les exigences):
^\d+(\.\d+)?$
C'est ce que j'ai fait. C'est plus strict que l'un des ci-dessus (et plus correct que certains):
Chaînes de passe:
Chaînes qui échoue:
propre et simple.
Il utilise le Suffixe et Préfixe, RegEx fonctionnalités.
Directement retourne vrai - faux pour IsMatch condition
Venu avec cette. Permet à la fois entier et décimal, mais les forces complète décimal (attaque et de fuite des nombres) si vous décidez d'entrer un nombre décimal.
vous pouvez utiliser ceci:
correspond à:
11
11.1
0.2
ne correspond pas à:
.2
2.
2.6.9
En Perl, utiliser Regexp::Common qui va vous permettre de monter une fine expression régulière pour votre format de nombre. Si vous n'êtes pas à l'aide de Perl, le produit de l'expression régulière peut généralement pas être utilisé par d'autres langues.
L'impression du résultat de la génération de l'exemple des expressions régulières dans Regexp::Common::Nombre: