12
votes

Expression régulière pour n'accepter que des nombres et des décimaux positifs

J'ai besoin d'une expression régulière en JavaScript qui n'acceptera que des nombres positifs et des décimales. C'est ce que j'ai mais quelque chose ne va pas - il ne semble pas prendre des chiffres positifs. xxx

par exemple, 9 ne fonctionnera pas. Comment puis-je restructurer cela, donc s'il y a au moins un chiffre positif, cela fonctionnera?


1 commentaires

Depuis que vous avez + après chaque classe de caractères [0-9], les chiffres sans décimales devront être au moins deux chiffres.


6 Réponses :


3
votes

Il existe peu de façons différentes de le faire en fonction de vos besoins:

/ ^ [0-9.] + $ / correspondance 1 et 1.1 mais pas -1

/ ^ [0-9] + \. [0-9] + $ / correspondant 1.1 mais pas 1 ou ou -1

Généralement, je vous recommande d'utiliser un simple guide de référence RegexP comme http://www.regular-expressions.info/ pour les expressions de construction, puis testez-les à l'aide de JavaScript à droite de votre console de navigateur:

"123,45" .match (/ ^ [0-9.] + $ /)


2 commentaires

Cela inclura également ... et ainsi de suite.


C'est vrai que - semblait être la question plus large avant qu'elle ait été modifiée.



33
votes
/^[+]?([1-9][0-9]*(?:[\.][0-9]*)?|0*\.0*[1-9][0-9]*)(?:[eE][+-][0-9]+)?$/

4 commentaires

@Mikechristensen, il ne gère pas la notation scientifique, mais vous pouvez gifler un facultatif [ee] [+ -]? [0-9] + avant le $ pour gérer ce.


Comment ajouter une contrainte de longueur dedans, indique que pour permettre au nombre d'un numéro après l'ex-12.22 est valide mais 12.123 non


@Saurabh, vous devez modifier le [0-9] * et [0-9] + pour utiliser un nombre de plage à la place: / ^ [+]? ([0-9] + (?: [ \.] [0-9] {0,2})? | \. [0-9] {1,2}) $ /


@Mikesamuel Merci, cela fonctionne de valider pour chiffrer après le point après le point, mais pas avant le point, j'ai essayé de modifier comme / ^[0-9] {0,2.0,2. " 9] {0,2})? | \. [0-9] {1,2}) $ / Pour limiter la valeur Avant le point sur 2 chiffres, l'exemple de valeur max peut être de 99,99 et positif



1
votes

Du comme: xxx


1 commentaires

Cela ne correspond pas aussi à des choses comme .0.0 ?



1
votes

Vous pouvez essayer ceci -

^\d{0,10}(\.\d{0,2})?$


0 commentaires

1
votes

J'ai trouvé quelque chose d'intéressant qui travaille pour moi !!! J'espère que pour toi aussi ... !!!

[0-9] . [0-9]

regex pour n'accepter qu'un nombre positif avec un point décimal

correspondance: 1, 2564, 2.5545, 254.555

pas correspondant: -333, 332.332.332, 66-665.455, 55554-4552


0 commentaires

0
votes

J'ai fait un au cas où les gens sont intéressés: ^ ([0-9] *) (. [[0-9] +]?)? $

mais il n'a pas de signe '+' Bien que cela n'accepte pas non plus '-' signe

Il accepte: xxx

rejeter: xxx


0 commentaires