Comment valider un nombre décimal en JavaScript ?

Si l'on souhaite vérifier qu'un nombre est bien décimal, une première solution consiste à combiner deux méthodes de validation différentes.

En JavaScript, un nombre peut être entier, décimal mais aussi hexadécimal. Les méthodes de validation de nombres fournies indiqueront qu'un nombre est vrai dans ces trois cas.

Si l'on souhaite vérifier qu'un nombre est bien décimal, il faut donc utiliser d'autres moyens de validation. Une première solution consiste à combiner deux méthodes de validation différentes. La méthode isNaN (pour is Not a Number) vérifie qu'une variable n'est pas un nombre. Elle retournera donc faux si la variable est un nombre entier décimal ou hexadécimal. La fonction isFinite() vérifie que la variable en paramètre est un nombre fini. Elle ne valide pas un nombre hexadécimal mais retournera vrai pour une opération, par exemple 5-3.

En combinant ces deux fonctions dans un test, on obtient un moyen de vérifier qu'un nombre est bien décimal :

var test = !isNaN(parseFloat(3.5)) && isFinite(3.5) //test reçoit la valeur vrai
var test = !isNaN(parseFloat(ab4c)) && isFinite(ab4c) //test reçoit la valeur faux
var test = !isNaN(parseFloat(bonjour)) && isFinite(bonjour) //test reçoit la valeur faux

Une autre solution consiste à utiliser une expression régulière. Celle-ci s'écrit ^-{0,1}d*.{0,1}d+$ et se décompose de la manière suivante :

^ : début de la chaîne
-{0,1} : le trait d'union pour un nombre négatif absent ou présent une seule fois
d* : de zéro à plusieurs chiffres
.{0,1} : le point séparant la partie entière de la partie décimale, absent ou présent une seule fois
d+ : au moins un chiffre
$ : fin de la chaîne

Exemple :

var testDecimal = /^-{0,1}d*.{0,1}d+$/;
var test = testDecimal.test(5.3); //test reçoit la valeur vrai
var test = testDecimal.test(a4); //test reçoit la valeur faux
var test = testDecimal.test(bonjour); //test reçoit la valeur faux

JavaScript