Page 1 sur 1
Tester si une chaîne ne contient que des chiffres ?
Posté : 26 mai 2005, 23:40
par PhilFree
Salut à tous,
J'ai écrit cette fonction afin de tester si une chaîne de caractères ne contient que des chiffres:
function isnum($valeur)
{
var checkOK = "0123456789";
var allValid = true;
var decPoints = 0;
var allNum = "";
for ( i = 0 ; i < $valeur.length ; i++ )
{
ch = $valeur.charAt(i);
for ( j = 0 ; j < checkOK.length ; j++ )
if ( ch == checkOK.charAt(j) )
break;
if ( j == checkOK.length )
{
allValid = false;
break;
}
allNum += ch;
}
if ( !allValid )
{
alert("Ne tapez que des chiffres dans les champs !");
return (false);
}
}
Je suis certain qu'il y a beaucoup plus court, si vous avez une idée, je suis preneur.
.
Posté : 26 mai 2005, 23:44
par Cyrano
ouais, la fonction isNaN() : pour "is Not a Number" : voir
ICI vers le bas de la page
Posté : 26 mai 2005, 23:50
par PhilFree
Salut Cyrano,
Et merci, j'y avais pensé, mais je ne cherche pas à déterminer si c'est un nombre ou non.
Je cherche à savoir si une chaîne ne contient que des chiffres
C'est très différent, 10.5 est un nombre mais il n'est pas composé que de chiffres. (il contient le caractère ".")
Donc ma fonction doit retourner FALSE ...
As-tu une autre idée ?
Posté : 27 mai 2005, 00:02
par Cyrano
Peut-être une combinaison de isNan() et parseInt(), quelque chose du genre
Code : Tout sélectionner
function chiffresSeulement(nombre)
{
if(!isNaN(nombre))
{
if(parseFloat(nombre) != nombre)
{
return false;
}
else
{
return true;
}
}
else
{
return false;
}
}
Posté : 27 mai 2005, 00:10
par PhilFree
Merci Cyrano,
Mais je pensais à quelquechose de beaucoup plus court.
Un truc comme isNaN()
Ma fonction isnum() marche très bien, mais je trouve que c'est une usine à gaz pour règler un problème aussi simple.
Posté : 27 mai 2005, 00:13
par Cyrano
Je ne suis pas un spécialiste en JavaScript, c'est pour l'instant la meilleure idée que j'aie pu trouver

Posté : 27 mai 2005, 11:13
par albat
À part vérifier que ta valeur est numérique, puis entière, je ne vois pas d'autre solution.
(et encore, utilises-tu les espaces comme séparateurs de milliers ?...)
Sinon les regexp...
Posté : 27 mai 2005, 19:28
par PhilFree
utilises-tu les espaces comme séparateurs de milliers ?...
Sinon les regexp...
Salut albat,
Le chaînes que j'utilisent ne sont pas des nombres, il n'y a a donc pas de séparateur de milliers, ni de virgule, juste les chiffres de 0 à 9.
Par contre il est important de tester que la chaîne n'est bien composée que de chiffres.
Ces chaînes sont utilisées par le système
UCC/EAN 128.
Tu parles de "
regexp", qu'est-ce ?
Et merci de t'interesser à mon problème.
.
Posté : 27 mai 2005, 22:07
par albat
Les expressions régulières sont... coment dire ?... des modèles de format pour des chaînes de caractères.
On les utilise souvent par exemple pour vérifier la validité d'une adresse e-mail saisie par l'utilisateur :
la chaîne contient-elle le caractère @ ? Y a-t-il un suffixe d'au moins 2 caractères ?...
Ripat a d'ailleurs rédigé un
tuto sur ce sujet.

Que son nom soit vénéré par les générations futures...

Posté : 27 mai 2005, 23:01
par PhilFree
Les expressions régulières sont... coment dire ?... des modèles de format pour des chaînes de caractères.
Merci, à toi et pour le tuto de Ripat.
Mais si j'ai bien compris, ça ne concerne que PHP ?
Y-a-t-il un équivalent Javascript aux expressions régulières de PHP ?

Posté : 28 mai 2005, 00:13
par albat
Tu peux créer une fonction JS qui analyse chaque caractère de ta chaîne et vérfie pour chacun s'il est un chiffre.