RegExp javascript sa me rend fou

Résolu/Fermé
yann1123 Messages postés 106 Date d'inscription lundi 28 juillet 2008 Statut Membre Dernière intervention 2 novembre 2009 - 11 mai 2009 à 19:51
yann1123 Messages postés 106 Date d'inscription lundi 28 juillet 2008 Statut Membre Dernière intervention 2 novembre 2009 - 30 sept. 2009 à 21:27
Bonjour,
J'ai un petit problème je n'arrive pas a faire un test pour voir si il ya la présence de l'arobase du point la présence du souligné et du tiré:

var exp_mail = new RegExp("^@[a-z0-9.-_]$","i"); 

mais je sais pas pourquoi mais il ignore tout le temps ma condition:

	if (exp_mail.exec(email)==0)
	{
		alert ('votre mail n\'est pas valide')
		return false;
	}

j'ai déjà essayer avec la méthode test mais rien y fait. le navigateur ignore tout le temps ma conditions. et c'est seulement cette condition qu'il ignore les autres marches a merveille.

je vous envois toute la page html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

<head>
<title>TEST javscript</title>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-script" content="text/javascript" />
<!-- JAVSCRIPT -->
<script type="text/javascript">
<!--

function validation()
{
var texte = document.formulaire.texte.value;

var texte_length = texte.length;

var exp = new RegExp("^[a-zéèàçûîïô]$","i");

var exp1 = new RegExp("^[0-9_&'()§!.;,?:=±$*€-]$");

var exp_mail = new RegExp("^@[a-z0-9.-_]$","i");

var email = document.formulaire.email.value;




	if (texte =="" || texte_length>7 && texte_length<=3 || email=="")
	{
		alert('l\'un de vos champs est vide');
		texte="";
		return false;
	}
	if (exp_mail.exec(email)==0)
	{
		alert ('votre mail n\'est pas valide')
		return false;
	}
	if (exp.test(texte)=="false")
	{
		alert('invalide');
		texte=="";
		return false;
	}
	if (exp1.exec(texte))
	{
		alert('invalide');
		texte=="";
		return false;
	}
	if (exp1.exec(texte)+exp.test(texte)=="false")
	{
		alert('invalide');
		texte=="";
		return false;
	}	
	else
	{
		alert('vos données sont en cours de transfert cliquez sur ok');
		return true;
	}
}

	

//-->

</script>

</head>
<body>
<form name="formulaire" action="test2.html" onsubmit="return validation()">
<pre>Test texte  <input type="text" name="texte" value="" /><br />
Test mail   <input type="text" name="email" value="" /></pre>
<input type="submit" value="valider" />
<input type="reset" value="annuler" />
</form>
</body>
</html>


merci d'avance

5 réponses

P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
12 mai 2009 à 08:45
Le - est un méta caractère dans une classe, en le mettant entre le . et le _, tu indiques de prendre tous les caractères situés entre les deux (voir table ascii).
Il faut donc soit l'échapper, soit le mettre en début ou fin de la classe.

var exp_mail = new RegExp("^@[a-z0-9.-_]$","i");

C'est incorrect, tu n'as pas de quantificateurs pour ta classe de caractères, de plus en mettant l'@ en premier, il faudrait que l'email commence par @.

Le masque de l'expression devrait plutôt ressembler à quelque chose comme :

"^[a-z0-9_.-]{3,}@[a-z0-9_.-]{3,}\.[a-z]{2,5}$"
8
tiezon Messages postés 8 Date d'inscription mardi 23 décembre 2008 Statut Membre Dernière intervention 20 décembre 2010 4
16 août 2009 à 11:17
voilà j'espere que ça pourra t'aider!

function testEmail(chaine){
var reg=new RegExp("[@.-_]+", "g");
var tab = chaine.split(reg);
if ((tab[0]==null)||(tab[1]==null)||(tab[2]==null)||(tab[3]==null)||(tab[4]==null)) return true;
else return false;
}

courage...
2
yann1123 Messages postés 106 Date d'inscription lundi 28 juillet 2008 Statut Membre Dernière intervention 2 novembre 2009 3
12 mai 2009 à 21:40
merci bcp t'es conseil m'ont bcp aidé
A+
1
yann1123 Messages postés 106 Date d'inscription lundi 28 juillet 2008 Statut Membre Dernière intervention 2 novembre 2009 3
30 sept. 2009 à 21:27
merci ^^ lol et pour le courage j'en ai besoin haha mais sa avance bien... je commence a avoir un bon niveau.
0

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

Posez votre question
yann1123 Messages postés 106 Date d'inscription lundi 28 juillet 2008 Statut Membre Dernière intervention 2 novembre 2009 3
11 mai 2009 à 22:06
up
-9