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.
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+)?$/
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))"
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
}
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