Problème d'expression régulière

Résolu/Fermé
Ysabe_l Messages postés 12456 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 25 avril 2024 - 1 nov. 2013 à 16:41
Ysabe_l Messages postés 12456 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 25 avril 2024 - 1 nov. 2013 à 22:51
Bonjour,

J'essaye d'utiliser une expression régulière pour vérifier que ma chaîne de caractère est de type alphanumérique et contient entre 8 et 12 caractères.

Je me sens très nouille parce que je n'y arrive pas et je ne trouve pas d'où vient le soucis.

Voici de ce que j'ai écris


alert(nom); // alert de test à supprimer à la fin

var $regexp = /^[a-zA-Z0-9]{8,12}$/;
var $nom_alphanum = $regexp.test($nom);
if (nom_alphanum == false)
{
alert('Le nom entré ne doit contenir que des lettres et des nombres');
}
else
{
alert('Nom alphanumérique ok'); // alert de test à supprimer à la fin
}

le alert(nom); c'est pour vérifier que le nom est bien récupéré, et il l'est.

Et donc par la suite aucune de deux alert ne se lance donc je suppose que le soucis vient de mon expression régulière vu que c'est mon gros point faible malgré de multiples lectures sur le sujet.

Merci donc d'avance à celui ou celle qui pourra me corriger et m'expliquer pourquoi c'est faux.
A voir également:

3 réponses

salut, je viens de tester ta regex elle est correct. De toute façon je le savais car j'ai eu à faire en excercice en ajax php cette semaine avec la même regex.

par exemple pour te montrer qu'elle est juste
:
<input type="text" id="nom" />
<input type="button" id="but" />
<script type="text/javascript">
var nom = document.getElementById("nom");
document.getElementById("but").onclick = function() {
if (!/^[a-zA-Z0-9]{8,12}$/.test(nom.value)) {
alert('Le nom entré ne doit contenir que des lettres et des nombres');
} else {
alert('Nom alphanumérique ok');
// alert de test à supprimer à la fin
}
}
</script>


׺°"~'"°º×]|I{*------» m3745p10!7 «------*}I|[׺°"~'"°º×
0
Ysabe_l Messages postés 12456 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 25 avril 2024 274
1 nov. 2013 à 21:41
Merci,

Ben oui c'est le même exercice qu'on a eu à faire ^^ mais je t'assure que mon code n'affiche aucun des deux alert donc je ne vois pas d'où viens le problème si l'expression est bonne.
0
maka54 Messages postés 699 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
1 nov. 2013 à 19:17
var $nom_alphanum = $regexp.test($nom);
if (nom_alphanum == false)


nom_alphanum , il manque le $ dans le if , du coup false a chaque fois
0
Ysabe_l Messages postés 12456 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 25 avril 2024 274
1 nov. 2013 à 21:42
Bonjour,

Merci, mais j'avais testé avec et sans et ça donnait la même chose (dans un autre exercice j'avais fait sans et ça marchait). Là je viens de le remettre et ça ne lance toujours aucun de des deux alert.
0
Ysabe_l Messages postés 12456 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 25 avril 2024 274
1 nov. 2013 à 22:51
Bonsoir,

J'ai réussi à résoudre le soucis même si je ne comprends pas pourquoi vu que de cette manière ça a marché dans un autre exercice !

J'ai supprimé l'étape var $nom_alphanum = $regexp.test($nom); en la mettant directement dans le if, ce qui donne


alert(nom); // alert de test à supprimer à la fin

var $regex = /^[a-zA-Z0-9]{8,12}$/;
if ($regex.test(nom) == false)
{
alert('Le nom entré ne doit contenir que des lettres et des nombres et comporter entre 8 et 12 caractères');
}
else
{
alert('Nom alphanumérique ok'); // alert de test à supprimer à la fin
}

Voilà si ça peut aider un jour quelqu'un.

Merci en tout cas de vous être penchés sur mon soucis.
0