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 :

Utilisation de la fonction replace() avec une regexp


Sujet :

JavaScript

  1. #1
    Membre habitué Avatar de Ishizaki
    Inscrit en
    Avril 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 262
    Points : 175
    Points
    175
    Par défaut Utilisation de la fonction replace() avec une regexp
    Bonjour,

    Dans le cadre d'un calcul de clé RIB, je dois utiliser un algorithme (visible ici) pour remplacer, si un compte contient des lettres, ces mêmes lettres par un chiffre.

    J'ai donc utilisé des expressions régulières pour ce faire, avec la fonction replace() :

    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
     
     
    var accountNumber = "BCDEFGHIJKL"
     
    //Mise en place des masques pour les expressions régulières
        var arrayRegEx = new Array(9);
     
        //On va assigner à chaque index du tableau une expression
        arrayRegEx[0] = /(a|j)/gi;
        arrayRegEx[1] = /(b|k|s)/gi;
        arrayRegEx[2] = /(c|l|t)/gi;
        arrayRegEx[3] = /(d|m|u)/gi;
        arrayRegEx[4] = /(e|n|v)/gi;
        arrayRegEx[5] = /(f|o|w)/gi;
        arrayRegEx[6] = /(g|p|x)/gi;
        arrayRegEx[7] = /(h|q|y)/gi;
        arrayRegEx[8] = /(i|r|z)/gi;
     
     
     
        //On parcourt le tableau de regex, si on trouve une correspondance, on remplace
        for (var regExLength = 0; regExLength < arrayRegEx.length; regExLength++) {
     
            var currentRegEx = arrayRegEx[regExLength];
     
            if (accountNumber.match(currentRegEx)) {
     
                //Ca correspond, on remplace le caractère par l'index + 1 (car le tableau commence à 0)
     
                var newValue = (regExLength + 1).toString();
     
                accountNumber.replace(currentRegEx, newValue);            
            }
        }
    Malheureusement, le replace ne fonctionne pas, à l'arrivée, j'ai toujours cette valeur : "BCDEFGHIJKL". Pourtant, j'ai autorisé le multi replace avec g, j'ignore la casse avec i, et il passe bien dans le if quand une regex correspond...

    Je vous remercie de votre aide .

  2. #2
    Membre habitué Avatar de Ishizaki
    Inscrit en
    Avril 2006
    Messages
    262
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 262
    Points : 175
    Points
    175
    Par défaut
    Et j'ai envie de crier "Bouleeeet !".

    le replace ne modifie pas la valeur... Il faut donc l'assigner à une nouvelle variable pour le récupérer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var newText = text.replace(/RegExp/gi,"1");
    Désolé d'avoir posté pour ça -__-.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/05/2015, 14h55
  2. Réponses: 3
    Dernier message: 03/03/2010, 19h05
  3. utilisation de la fonction Partdate() dans une requête
    Par jm6570 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 01/02/2010, 11h55
  4. Utilisation de la fonction TOP avec une jointure
    Par pc75 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 06/07/2007, 08h11
  5. fonctions stockées avec une table en argument
    Par bdkiller dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 08/10/2004, 23h17

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