web-dev-qa-db-fra.com

expression régulière pour trouver des nombres décimaux/flottants?

j'ai besoin d'une expression régulière pour les nombres décimaux/flottants comme 12 12.2 1236.32 123.333 et +12.00 ou -12.00 ou ... 123.123 ... pour une utilisation en javascript et jQuery . Merci.

25
MBehtemam

Faites correspondre éventuellement un + ou un - au début, suivi d'un ou plusieurs chiffres décimaux, optionnel suivi d'un point et de un ou plusieurs chiffres décimaux à la fin de la chaîne:

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

RegexPal

60
Paulpro

La bonne expression devrait être comme suit:

[+-]?([0-9]*[.])?[0-9]+

ceci s'applique pour:

+1
+1.
+.1
+0.1
1
1.
.1
0.1

Voici l'exemple de Python:

import re
#print if found
print(bool(re.search(r'[+-]?([0-9]*[.])?[0-9]+', '1.0')))
#print result
print(re.search(r'[+-]?([0-9]*[.])?[0-9]+', '1.0').group(0))

Sortie:

True
1.0

Si vous utilisez mac, vous pouvez tester en ligne de commande:

python -c "import re; print(bool(re.search(r'[+-]?([0-9]*[.])?[0-9]+', '1.0')))"

python -c "import re; print(re.search(r'[+-]?([0-9]*[.])?[0-9]+', '1.0').group(0))"
4
lbsweek

Vous pouvez vérifier la validation du texte et également une validation avec une seule décimale avec isNaN

var val = $('#textbox').val();
var floatValues =  /[+-]?([0-9]*[.])?[0-9]+/;
 if (val.match(floatValues) && !isNaN(val)) {
  // your function
}
2
Swathi

Les réponses de Paulpro et lbsweek m'ont conduit à ceci:

re=/^[+-]?(?:\d*\.)?\d+$/;
>> /^[+-]?(?:\d*\.)?\d+$/

re.exec("1")
>> Array [ "1" ]

re.exec("1.5")
>> Array [ "1.5" ]

re.exec("-1")
>> Array [ "-1" ]

re.exec("-1.5")
>> Array [ "-1.5" ]

re.exec(".5")
>> Array [ ".5" ]

re.exec("")
>> null

re.exec("qsdq")
>> null
0
duparq