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 :

Erreur expression régulière


Sujet :

JavaScript

  1. #1
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut Erreur expression régulière
    Bonjour,

    J'utilise la fonction de "Modification "inline" de données avec AJAX" détaillé ici

    Elle fonctionne très bien sauf lorsque j'ai un texte avec des ()

    Exemple :

    Assurance (divers)
    Lorsque je doubleclique sur ce texte, la zone s'ouvre pour la modification sans le texte.

    Dans la fonction inelineMod, j'ai contrôlé la valeur récupéré en mettant des alert avant et après la fonction de suppression des espaces, mais la valeur avant et après est identique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //Assignation de la valeur
    	if (obj.innerText)
    		input.value = obj.innerText;
    	else
    		input.value = obj.textContent;
    	alert(input.value);	
    	input.value = trim(input.value);
    	alert(input.value);
    Lors de l'affichage des alert, le texte contient plein d'espace avant le 1er caractère.

    Ce phénomène n'existe pas si je retire les ().

    Donc je me dis que c'est dans la récupération du texte que quelque chose ne va pas. c'est à dire sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    input.value = obj.textContent;
    Mais je ne vois pas pourquoi.

    Merci pour votre aide.

  2. #2
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Bon en continuant de creuser, c'est dans la fonction trim qu'il n'est pas content.

    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
    function trim(value) 
    {
       var temp = value;
       var obj = /^(\s*)([\W\w]*)(\b\s*$)/;
       if (obj.test(temp)) 
       { 
    		temp = temp.replace(obj, '$2'); 
       }
       var obj = /  /g;
       while (temp.match(obj)) 
       {
    		temp = temp.replace(obj, " "); 
    	}
       return temp;
    }
    C'est clair que c'est les () qu'il n'aime pas. Donc ce doit être dans la définition de son expression reguliere :

    obj = /^(\s*)([\W\w]*)(\b\s*$)/;
    Lorsque j'ai des (), je passe dans la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while (temp.match(obj)) 
       {
    		temp = temp.replace(obj, " "); 
    	}
    Mais il ne supprime pas les espaces.

  3. #3
    Membre extrêmement actif Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Points : 682
    Points
    682
    Par défaut
    Bon ben j'ai fait autrement

    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
    //Suppression des espaces/sauts de ligne inutiles (http://www.breakingpar.com/bkp/home.nsf/0/87256B280015193F87256C0C0062AC78)
    String.prototype.trim = function ( )
    {
        var reg = new RegExp("(^\\s+)|(\\s+$)", "ig");
        return this.replace(reg, "");
    }
     
    String.prototype.trimAll = function ( )
    {
        var reg = new RegExp("([ 	]){2,}", "ig");
        return this.trim().replace(reg, "$1");
    }
    function trim(value) 
    {
       var temp = value.trim();
       var temp = temp.trimAll();
       return temp;
    }
    Et cela fonctionne bien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.0] erreur de syntaxe avec une expression régulières
    Par SpeedOverflow dans le forum Langage
    Réponses: 2
    Dernier message: 20/01/2012, 12h48
  2. Expression régulière avec une erreur
    Par sebnantes dans le forum VB.NET
    Réponses: 5
    Dernier message: 08/11/2010, 21h54
  3. erreur dans l'expression régulière ?
    Par Peanut dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/02/2009, 15h28
  4. Réponses: 17
    Dernier message: 22/08/2008, 14h06
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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