Tester si une chaîne ne contient que des chiffres ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Tester si une chaîne ne contient que des chiffres ?

par albat » 28 mai 2005, 00:13

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.

par PhilFree » 27 mai 2005, 23:01

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 ?

:?:

par albat » 27 mai 2005, 22:07

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... :agenouille:

par PhilFree » 27 mai 2005, 19:28

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.

.

par albat » 27 mai 2005, 11:13

À 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...

par Cyrano » 27 mai 2005, 00:13

Je ne suis pas un spécialiste en JavaScript, c'est pour l'instant la meilleure idée que j'aie pu trouver ;)

par PhilFree » 27 mai 2005, 00:10

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.

par Cyrano » 27 mai 2005, 00:02

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; } }

par PhilFree » 26 mai 2005, 23:50

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 ?

par Cyrano » 26 mai 2005, 23:44

ouais, la fonction isNaN() : pour "is Not a Number" : voir ICI vers le bas de la page

Tester si une chaîne ne contient que des chiffres ?

par PhilFree » 26 mai 2005, 23:40

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. :wink:

.