Regex avec javascript
Résolu
rukire
Messages postés
90
Date d'inscription
Statut
Membre
Dernière intervention
-
th@o -
th@o -
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
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
A voir également:
- Regex avec javascript
- Telecharger javascript - Télécharger - Langages
- A javascript error occurred in the main process - Forum Windows
- A javaScript error occurred in the main process - Forum Handicap / Accessibilté
- Erreur #125 javascript - Forum Mozilla Firefox
- Afficher un tableau javascript en html ✓ - Forum Javascript
6 réponses
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;"
{
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;"
th@o
que doit contenir la variable evt dans ta fonction
th@o
non c'est bon j'ai compris
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
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
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 ^^)
Utilisez ceci pour tester, j'essaie de trouver la bonne regexp en attendant : http://www.annuaire-info.com/outil-referencement/expression-reguliere/
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
mais ca marche pas très bien ! quoi que je tape ca m'affiche l'erreur :s
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 !
Merci d'avance !