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 .