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:
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 :).