J'utilise le regexp suivant pour valider les nombres dans mon fichier javascript:
var valid = (val.match(/^\d+$/));
Il fonctionne bien pour des nombres entiers comme 100, 200, etc., cependant pour des choses comme 1.44, 4.11, etc., il renvoie faux. Comment puis-je le modifier, donc les nombres avec une décimale sont-ils également acceptés?
var valid = (val.match(/^\d+(?:\.\d+)?$/));
Allumettes:
1 : yes 1.2: yes -1.2: no +1.2: no .2: no 1. : no
var valid = (val.match(/^-?\d+(?:\.\d+)?$/));
Allumettes:
1 : yes 1.2: yes -1.2: yes +1.2: no .2: no 1. : no
var valid = (val.match(/^[-+]?\d+(?:\.\d+)?$/));
Allumettes:
1 : yes 1.2: yes -1.2: yes +1.2: yes .2: no 1. : no
var valid = (val.match(/^[-+]?(?:\d*\.?\d+$/));
Allumettes:
1 : yes 1.2: yes -1.2: yes +1.2: yes .2: yes 1. : no
var valid = (val.match(/^[-+]?(?:\d+\.?\d*|\.\d+)$/));
Allumettes:
1 : yes 1.2: yes -1.2: yes +1.2: yes .2: yes 1. : yes
essaye ça:
^[-+]?\d+(\.\d+)?$
IsNaN semble être une meilleure solution pour moi.
> isNaN('1') false > isNaN('1a') true > isNaN('1.') false > isNaN('1.00') false > isNaN('1.03') false > isNaN('1.03a') true > isNaN('1.03.0') true
Si vous souhaitez accepter des décimales (y compris <1) et des nombres entiers, avec des signes + ou – optionnels, vous pouvez utiliser valide = Numéro (val).
Ou un regexp:
valid=/^[+\-]?(\.\d+|\d+(\.\d+)?)$/.test(val);
! IsNaN (texte) && parseFloat (texte) == texte