Regex avec javascript

Résolu/Fermé
rukire Messages postés 90 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 6 avril 2009 - 17 mars 2009 à 15:34
 th@o - 23 juin 2010 à 17:55
Bonjour,
Je galère a écrire une fonction avec javascript,
en fait lorsque l'utilisateur tape quelque chose donc onkeyup="...(this)" dans mon formulaire a l'élément souhaité.
la chaine ne doit pas commencer par un chiffre et ne doit pas contenir d'espace, de tiret et de @ (les caractères interdit dans une varible perl en gros)

voila mon script :

function verifsaisie(elem)
{
var valeur = elem.value;
var reg = new RegExp("^[^0-9][^@ -]", "gi");

if(valeur.match(reg))
{
alert("Vous ne devez pas entrer de caractères spéciaux !\n(début de chaine par un chiffre, pas d'espace, ni de tiret, ni d'arobase)");
elem.value = "";
}

}

si quelqu'un voit pourquoi ca ne marche pas ou a une idée, je lui en suis très reconnaissante de m'aider.
Sinon merci quand même d'avoir lu

6 réponses

NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
17 mars 2009 à 15:39
function verifSaisie(evt)
{
var keyCode = evt.which ? evt.which : evt.keyCode;
var mask = '^[0-9]{1,3}|\u0009|\u0008|\u000D$';
var reg = new RegExp(mask,"g");
if(!reg.test(String.fromCharCode(keyCode))){
return false;
}
}

et je mets onkeypress="return verifSaisie(event);" dans l'input
voici mon code, il marche, remplacé le mask par le votre. Par contre ce que je fais c'est juste que j'empêche l'insertion des éléments contenus dans le mask. Pour afficher l'alerte il faudrait le faire juste avant le "return false;"
1
que doit contenir la variable evt dans ta fonction
0
non c'est bon j'ai compris
0
rukire Messages postés 90 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 6 avril 2009 4
18 mars 2009 à 10:02
J'ai trouvé ! en fait j'avais déja un js qui vérifiait que le nom saisie n'existe pas déja dans un tableau donné en paramètre et donc a ca j'ai ajouté mon code et maintenant ca marche !

js :

function verif_nom (elem,tab,i)
{
// tab est une chaine de caractère séparé par des virgules
// verification que l'element saisie elem ne se trouve pas dans tab
// i indice de elem precedent
var tabnom=tab.split(",");
var newname = elem.value;
for (var j=0;j<tabnom.length;j++)
{
if(i != j)
{
if (tabnom[j] == newname)
{
alert("Le nom entré existe déjà ! Entrez en un nouveau svp");
elem.value = "";
}
}

}
var valeur = elem.value;
var reg = new RegExp("^[a-z._][_.a-z0-9]+$", "gi");

if(valeur.match(reg))
{}
else
{
alert("Vous ne devez pas entrer de caractères spéciaux !\n(début de chaine par un chiffre, pas d'espace, ni de tiret, ni d'arobase)");
elem.value = "";
}
}

input :

$nom='nom'.$i; //choix du nom (avec vérification existance)
echo '<tr><td><label for="nom"><a class="normal" href="guide.php#nom" target="_blank">Nom</a></label> : <input type="text" id="nom" name="'.$nom.'" onblur="verif_nom(this,\''.$str.'\','.$k.');" /></td></tr>';

Merci beaucoup
1
rukire Messages postés 90 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 6 avril 2009 4
17 mars 2009 à 15:55
merci mais je ne comprend pas tout à ce qui est fait, et ca n'a pas l'air de marcher (ma méthode doit marcher mais je n'arrive pas a trouver la bonne regex ^^)
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
17 mars 2009 à 16:05
Utilisez ceci pour tester, j'essaie de trouver la bonne regexp en attendant : http://www.annuaire-info.com/outil-referencement/expression-reguliere/
0
rukire Messages postés 90 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 6 avril 2009 4
17 mars 2009 à 16:17
avec ce que tu m'as donné j'ai trouvé ca : ^[a-z][_.a-z0-9]+$
mais ca marche pas très bien ! quoi que je tape ca m'affiche l'erreur :s
merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rukire Messages postés 90 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 6 avril 2009 4
18 mars 2009 à 09:28
est ce que quelqu'un peut m'aider, avec la regex donné hier, je tape n'importe quoi (une lettre, un chiffre, etc) et ca m'affiche l'alerte, quelqu'un peu m'aider ?
Merci d'avance !
0
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 513
18 mars 2009 à 09:35
Je vous conseille de télécharger le module firefox, il vous permettra de débugger car pour le moment je ne vois pas d'erreur.

Je viens de tester votre expression, elle retourne faux quel que soit le cas en utilisant le lien que je vous ai fourni, je cherche une parade
0
rukire Messages postés 90 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 6 avril 2009 4
18 mars 2009 à 09:44
ben avec le lien d'hier moi ca marchait ! donc voila je suis complètement perdu et dans une impasse
0