IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

des expressions régulières


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 97
    Par défaut des expressions régulières
    Bonjour
    je suis en train de réaliser des fonctions pour vérifier mes formulaires.
    Il se passe que, après avoir rempli certains champs correctement et d'autres non, lorsque je clique pour vérifier, le résultat du test n'et pas constant. Il va me dire pour les champs ou il n'y a pas d'erreur, qu'il y en a une, puis la fois suivant il passera au champ suivant , et ainsi de suite de manière cyclique.

    Je ne comprend pas pourquoi.
    voici un extrait des codes javascript que j'utilise.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    var expNom=new RegExp("[a-zA-Z]{1}\w*","g");
    // le champ optionnel, sert à indquer que si le champ  n'est pas présent ou mal rempli alors on l'ignore
    function verifieNom(id,optionnel)
    {
    	var v=document.getElementById(id);
    	if(v!=undefined)
    	{
    		if(v.value!='')
    		{//window.alert(id+' non vide');
    			if(expNom.test(v.value))
    			{
    			//	window.alert('ok');
    				return true;
    			}
    			else
    			{
    				//window.alert('nok');
    				return false;
    			}
    		}
    		else
    		{//window.alert(id+' vide');
    			if(optionnel)
    				return true;
    			else
    				return false;
    		}
    	}
    	else
    	{//window.alert(id+' inexist');
    		if(optionnel)
    			return true;
    		else
    			return false;
    	}
    }
     
    function verifieFormulaire()
    {
    	var err='';
    	var v=null;
     
    	v=document.getElementById('Pourvue');
    	if(v.checked==true)
    	{
    		v=document.getElementById('Doctorant');
    		if(v.options[v.selectedIndex].value=='0')
    		{
    			if(!verifieNom('DoctNom',false))
    				err+='Problème sur le nom\n';
    			if(!verifieNom('DoctPrenom',false))
    				err+='Problème sur le prénom\n';
    			v=document.getElementById('DoctNation');
    			if(v.options[v.selectedIndex].value=='0')
    				err+='Vous devez spécifier la nationalité\n';
    		}
    		if(!verifieDate('DateDebut',false))
    			err+='Mauvais format sur la date de début\n';
    		if(!verifieDate('DateFin',false))
    			err+='Mauvais format sur la date de fin\n';
    	}
    	if(err!='')
    	{
    		window.alert(err);
    		return false;
    	}
    	else
    		return true;
    }
    merci

  2. #2
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function verifieNom(id,optionnel)
    {
    	var v=document.getElementById(id);
    	if(v!=undefined)
    	{
    j'écrirais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function verifieNom(id,optionnel)
    {
    	var v=document.getElementById(id);
    	if(v!=null)
    	{

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 97
    Par défaut
    J'ai fait la modif et même souci.

    Pour plus de précision, je vérifie les nom et prénoms et des dates de début et de fin.
    Les nom et prénoms sont remplis correctement en accord avec l'expression régulière (aa pour le nom, bb pour le prénom).
    1er clic tout est ok sauf pour les dates mais c'est normal
    2ème clic le nom est faux, prénom juste dates fausses
    3ème clic le nom est bon, prénom faux, dates fausses
    4ème clic =1er
    5ème clic =2ème
    .....

    J'ai instrumenté le code et a priori, c'est au niveau du test de l'expression régulière que vient le hic. Parfois, il l'identifie comme bonne parfois non.

  4. #4
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    j'ai testé ton script sous IE et Firefox. Sous IE pas de problème, par contre il est vrai que sous Firefox se produit le phénomène que tu décris et j'avoue ne pas comprendre

    Ceci dit ton expression régulière est quelque peu étrange :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var expNom=new RegExp("[a-zA-Z]{1}\w*","g");
    Si j'ai bien compris tu vérifies que le nom ou le prénom possède au moins une lettre ([a-zA-Z]{1}) suivie d'une ou plusieurs lettres ou chiffres (\w*)

    Que veux-tu tester exactement ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 97
    Par défaut
    tout d'abor merci pour ton aide
    Je souhaite des noms et prénoms, mais le phénomère se produite également avec des dates.
    Peut-être je n'écris pas correctement les expressions

    Pour la date voici celle que j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var expDate=new RegExp("^(0[1-9]|[12][0-9]|3[01])[\\- \\/\\.](0[1-9]|1[012])[\\- \\/\\.](19|20)\\d\\d$","g");

  6. #6
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    pour les dates tu peux regarder la méthode proposée par Spacefrog.

    Pour les noms et prénoms, le problème est plus difficile à gérer car, il faut en plus des caractères a-z tenir compte :
    - des caractères accentués : â, à, ä, é, è, ê, ë, ï, î, ö, ô, û, ù, ü (et je suis pas sûr qu'ils y soient tous)
    - du c cédille : ç
    - de l'apostrophe '
    - du trait d'union -
    - des espaces \s

    donc plutôt que de chercher les caractères autorisés, je pense que tu devrais rechercher les caractères interdits (la liste seriat sans doute moins longue)...

    Pour Firefox, j'essaye de comprendre le problème que tu as décrit plus haut.

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/09/2006, 13h16
  2. A propos des expressions régulières
    Par cladsam dans le forum Langages de programmation
    Réponses: 14
    Dernier message: 03/07/2006, 10h24
  3. [RegEx] preg_replace et syntaxe des expressions régulières
    Par MmoulinexX dans le forum Langage
    Réponses: 4
    Dernier message: 04/06/2006, 23h57
  4. Réponses: 1
    Dernier message: 03/02/2006, 12h35
  5. [RegEx] Traduire des "expression régulières" VBA en PHP
    Par jcachico dans le forum Langage
    Réponses: 13
    Dernier message: 19/01/2006, 14h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo