web-dev-qa-db-fra.com

Comment inclure des nombres décimaux négatifs dans cette expression régulière?

Comment faire correspondre les nombres négatifs aussi bien par cette expression régulière? Cette expression rationnelle fonctionne bien avec les valeurs positives, mais je souhaite également autoriser les valeurs négatives, par exemple. -10, -125.5 etc. 

^[0-9]\d*(\.\d+)?$

Merci

61
user1786107

Vous devez ajouter un tiret facultatif au début en ajoutant -? (? est un quantifier signifie une ou zéro occurrences):

^-?[0-9]\d*(\.\d+)?$

Je l'ai vérifié en Rubulaire avec ces valeurs:

10.00
-10.00

et les deux appariés comme prévu.

126
Mike Perrenoud

Quelques exemples d'expressions régulières:

Entiers positifs :

^\d+$

Entiers négatifs :

^-\d+$

Entier :

^-?\d+$

Nombre positif :

^\d*\.?\d+$

Nombre négatif :

^-\d*\.?\d+$

Nombre positif ou nombre négatif :

^-?\d*\.{0,1}\d+$

Numéro de téléphone :

^\+?[\d\s]{3,}$

Téléphone avec code :

^\+?[\d\s]+\(?[\d\s]{10,}$

Année 1900-2099 :

^(19|20)[\d]{2,2}$

Date (jj mm aaaa, j/m/aaaa, etc.):

^([1-9]|0[1-9]|[12][0-9]|3[01])\D([1-9]|0[1-9]|1[012])\D(19[0-9][0-9]|20[0-9][0-9])$

IP v4 :

^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]){3}$
98
KF2

Je ne sais pas pourquoi vous avez besoin de ce premier [0-9].

Essayer:

^-?\d*(.\d+)?$

Mettre à jour

Si vous voulez être sûr d'avoir un chiffre à la place, utilisez

^-?\d+(.\d+)?$
10
Andre Calil

J'ai quelques expériences sur le regex dans l'url de Django, qui demandait des nombres négatifs aux nombres positifs

^(?P<pid>(\-\d+|\d+))$

Nous allons nous concentrer sur cette partie (\-\d+|\d+) et ignorer les autres, ce point-virgule | signifieOUdans une expression rationnelle, la valeur négative correspondra à cette partie \-\d+ et la valeur positive à celle-ci \d+

1

Cela permettra aux entiers positifs et négatifs

ValidationExpression = "^ -? [0-9]\d * (\ d +)? $"

1
Prajwal Rai

UPDATED (13/08/2014): C'est le meilleur code pour les nombres positifs et négatifs =)

(^-?0\.[0-9]*[1-9]+[0-9]*$)|(^-?[1-9]+[0-9]*((\.[0-9]*[1-9]+[0-9]*$)|(\.[0-9]+)))|(^-?[1-9]+[0-9]*$)|(^0$){1}

J'ai essayé avec ces chiffres et fonctionne bien:

-1234454.3435
-98.99
-12.9
-12.34
-10.001
-3
-0.001
-000
-0.00
0
0.00
00000001.1
0.01
1201.0000001
1234454.3435
7638.98701
1
Pacho Zuñiga

Cela autorisera un caractère - ou + uniquement s'il est suivi d'un nombre:

 ^([+-](?=\.?\d))?(\d+)?(\.\d+)?$
1
Ian Timothy

Ajoutez simplement un jeton 0 ou 1:

^-?[0-9]\d*(.\d+)?$
0
BanksySan

Expression régulière pour nombre, point décimal optionnel, négatif optionnel:

^-?(\d*\.)?\d+$;

fonctionne pour entier négatif, décimal, négatif avec décimal

0
vivesh
^[+-]?\d{1,18}(\.\d{1,2})?$

accepte les valeurs décimales positives ou négatives.

0
Deepak Tambe

Cela a fonctionné pour moi, permettant à la fois des nombres négatifs et positifs :

 \-*\d+

Si vous utilisez C #:

Regex.Match(someString, @"\-*\d+").Value;
0
usefulBee

Pour les nombres négatifs seulement, c'est parfait.

^-\d*\.?\d+$
0
^(-?\d+\.)?-?\d+$

permettre:

23425.23425
10.10
100
0
0.00
-100
-10.10
10.-10
-10.-10
-23425.23425
-23425.-23425
0.234
0
alchemist