116 votes

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

Comment faire correspondre les nombres négatifs également par cette expression régulière ? Cette expression régulière fonctionne bien avec des valeurs positives, mais je veux qu'elle permette également des valeurs négatives, par exemple -10, -125,5, etc.

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

Merci

218voto

Michael Perrenoud Points 37869

Vous devriez ajouter un trait d'union facultatif au début en ajoutant -? ( ? est un quantificateur signification une ou zéro occurrence ) :

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

Je l'ai vérifié dans Rubular avec ces valeurs :

10.00
-10.00

et les deux correspondent comme prévu.

let r = new RegExp(/^-?[0-9]\d*(\.\d+)?$/);

//true
console.log(r.test('10'));
console.log(r.test('10.0'));
console.log(r.test('-10'));
console.log(r.test('-10.0'));
//false
console.log(r.test('--10'));
console.log(r.test('10-'));
console.log(r.test('1-0'));
console.log(r.test('10.-'));
console.log(r.test('10..0'));
console.log(r.test('10.0.1'));

152voto

IRSOG Points 3851

Quelques exemples d'expressions régulières :

Entiers positifs :

^\d+$

Nombres 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}$

12voto

Andre Calil Points 5437

Je ne sais pas pourquoi tu as besoin de ça en premier. [0-9] .

Essayez :

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

Mise à jour

Si vous voulez être sûr d'avoir un chiffre à la première position, utilisez alors

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

3voto

Pacho Zuñiga Points 41

MIS À JOUR(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 ça marche 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

2voto

Denver Timothy Points 28

Cela permettra à un - o + uniquement lorsqu'il est suivi d'un numéro :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X