Verification javaScript

Fermé
InAme19 Messages postés 539 Date d'inscription samedi 13 septembre 2008 Statut Membre Dernière intervention 29 novembre 2012 - 22 nov. 2008 à 19:11
InAme19 Messages postés 539 Date d'inscription samedi 13 septembre 2008 Statut Membre Dernière intervention 29 novembre 2012 - 22 nov. 2008 à 21:51
Bonsoir,

voilà je suis en train de faire un petit controle en javaScript,
Je voudrai que le champ que l'utilisateur rentre ne dépasse pas 16 caracteres.

J'ai écrit cela:

if( !( /[a-z0-9_]{1,16}/i.test(document.connexion.nom.value)) )


mais cela ne marche pas...

J'ai aussi fait en sorte qu'il doit rentrer un nombre minimal de caracteres :

if( !( /[a-z0-9_]{6,}/i.test(document.connexion.nom.value)))

ce dernier code marche parfaitement!

Alors qu'est ce qui ne va pas avec le premier??
Si quelqu'un pouvait m'éclairer, je lui en serai reconnaissant.

3 réponses

InAme19 Messages postés 539 Date d'inscription samedi 13 septembre 2008 Statut Membre Dernière intervention 29 novembre 2012 62
22 nov. 2008 à 21:10
décidement, impossible de trouver ce qui ne va pas à mon expression régulière...

Fesons un petit récapitulatif:
normalement une expression réguliere est de la forme:

Expression.test("chaine");
avec Expression = /motif/drapeau

le drapeau peut être g,i ou gi

g indique une recherche globale sur la chaîne de caractère et indique une recherche de toutes les occurences.
i indique une recherche non sensible à la casse, c'est-à-dire que la recherche se fait indépendamment de l'écriture en majuscule ou minuscule de la chaîne.
gi combine les deux comportements précédents.

donc pour l'instant on a par exemple: /motif/i.test("chaine");

ensuite le motif est la condition que l'on veut mettre.
Ainsi dans mon cas je veux que ma chaine soit composée de caractères, de chiffres et cela entre 1 et 16 fois

pour dire que c'est des caracteres alphanumériques on utilise: [a-z0-9]

puis pour dire le nombre de fois on utilise les {} : {1} une seule fois, {1,} au moins une fois, {1,16} entre une et 16 fois.

donc pour résumer on a [a-z0-9]{1,16}/i.test("chaine")
cela veut dire que l'on a une chaine alphanumérique entre 1 et 16 de longueur.

Dans mon cas ma chaine est : document.connexion.nom.value

Alors pourquoi mon code ne marche pas?

if( !( /[a-z0-9]{1,16}/i.test(document.connexion.nom.value)) )


Je ne comprend vraiment pas....
0
Profil bloqué
22 nov. 2008 à 21:39
--

pour limiter le nombre de caractères, tu dois simplement poser un maxlenght dans ton html.

aprés tu scinde ta chaine lenght et tu impose un nbre max .
http://www.je-retouche-vos-photos.com
0
InAme19 Messages postés 539 Date d'inscription samedi 13 septembre 2008 Statut Membre Dernière intervention 29 novembre 2012 62
22 nov. 2008 à 21:51
merci pour ta réponse
effectivement cette méthode marche bien. =)

Je vais l'utiliser mais si quelqu'un avait la réponse pour mon regex je suis preneur. ( j'aime bien comprendre pourquoi un truc ne marche pas ^^)
0