Bonjour à tous,
Je re-débute en développement Web (l'école est loin), et cela fait quelques jours que je sèche sur le contrôle d'une expression régulière...
En fait j'ai un formulaire, avec différentes zones de saisies. Nom, adresse, CP, ville, puis avec les données bancaires : banque, iban1, iban2,..., iban7, bic, mail, RIB/IBAN (pièce jointe).
Et un bouton envoyer.
Code html : 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 <form action="rib_chang_2.php?num_cred=<? echo $_GET[num_cred];?>&tipe=<? echo $_GET[tipe];?>" method="post" name="RIB" enctype="multipart/form-data" onsubmit="return valid_iban(this);"> <table class="tab03" > <tr> <td width="65"><b> Nom Prénom</b></td> <td colspan="2"><input type="text" name="nompr" size="45" maxlength="30" value="<?echo $tab_rib[nompr];?>" required/></td> </tr> <tr> <td><b> Adresse</b></td> <td colspan="2"><input type="text" name="adresse" size="45" maxlength="30" value="<?echo $tab_rib[adresse];?>" required/></td> </tr> <tr> <td><b> CP / Ville</b></td> <td colspan="2"><input style="width:100px;" type="text" name="cpost" size="5" maxlength="5" value="<?echo $tab_rib[cpost];?>" required/> / <input style="width:395px;" type="text" name="bdist" size="32" maxlength="24" value="<?echo $tab_rib[bdist];?>" required/></td> </tr> <tr><td><br/></td><td colspan="2"></td></tr> <tr> <td><b>Banque</b></td> <td colspan="2"><input type="text" name="banque" size="45" maxlength="30" value="" required/></td> </tr> <tr> <td><b>IBAN</b></td> <td colspan="2"><input style="width:75px;" type="text" name="iban1" size="4" maxlength="4" value="" required/> <input style="width:75px;" type="text" name="iban2" size="4" maxlength="4" value="" required/> <input style="width:75px;" type="text" name="iban3" size="4" maxlength="4" value="" required/> <input style="width:75px;" type="text" name="iban4" size="4" maxlength="4" value="" required/> <input style="width:75px;" type="text" name="iban5" size="4" maxlength="4" value="" required/> <input style="width:75px;" type="text" name="iban6" size="4" maxlength="4" value="" required/> <input style="width:75px;" type="text" name="iban7" size="4" maxlength="4" value="" required/> </td> </tr> <tr> <td><b>BIC</b></td> <td colspan="2"><input style="width:200px; "type="text" name="bic" size="11" maxlength="11" value="" required/></td> </tr> <tr> <td><b>E-mail</b></td> <td colspan="2" ><input type="email" name="email" size="30" value="<?echo $resultat[mail];?>" required /></td> </tr> <tr> <td style="font-size: 1em;"><b>RIB/IBAN</b></td> <td style="width:200px;"> <input type="file" name="nom_rib" id="nom_rib" accept=".pdf,.jpg" style="font-size: 0.8em;" required /></td><td><a style="color:red;" onclick="document.getElementById('nom_rib').value='';">X</a> <input type="hidden" name="MAX_FILE_SIZE" value="5000000" /> </td> </tr> </table><br/> <table class="tab03" > <tr><td> <center> <input id="envoyer" type="submit" name="Submit" value="Envoyer ma demande"/> <div id="patienter" style='background-image:url(../img/patientez.gif);background-repeat:no-repeat;background-position:center;height:80px;display:none;'></div></center> </td></tr> </table> </form>
Lorsque je clique sur le bouton envoyer, je veux contrôler l'IBAN et le BIC saisi. Mon contrôle d'IBAN se passe bien, mais lorsque je veux contrôler mon BIS, il me retourne toujours une erreur...
J'ai "imbriqué" mes deux contrôles dans valid_iban(), voir code ci-dessous. Donc je ne sais pas si c'est mon expression de l'expression régulière qui n'est pas bonne ou autre chose...
Pour info, je veux contrôler que les 4 premièrs caractères sont des lettres, les deux suivants le code pays "FR", ensuite les 2 suivantes de l'alphanumérique et les 3 suivants également des alphanumériques(selon la taille du BIC 8 ou 11).
J'espère avoir été assez clair. J'ai passé beaucoup de temps sur des tuto sur les expressions régulières, mais je n'arrive pas à trouver la solution. J'ai également essayé de déclarer ma variable maRegex très simplement comme ça.
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
71
72 <head><script language="javascript"> function valid_iban() { var iban = document.forms['RIB'].elements['iban1'].value+document.forms['RIB'].elements['iban2'].value+document.forms['RIB'].elements['iban3'].value+document.forms['RIB'].elements['iban4'].value+document.forms['RIB'].elements['iban5'].value+document.forms['RIB'].elements['iban6'].value+document.forms['RIB'].elements['iban7'].value; //On formate les caractères alphabétiques en majuscule iban = iban.toUpperCase(); iban = iban.replace(/[^A-Z0-9]/g, ''); //On place les 4 premiers caractères en fin de chaîne var modifIban = iban.substring(4, iban.length)+iban.substr(0,4); //l'Iban doit faire 27 caractères if(iban.length != 27){ alert("Le numéro d'Iban saisi est incorrect. Veuillez contrôler votre saisie"); return false; } if(iban.substr(0, 2) != "FR"){ alert("Le numéro d'Iban saisi est incorrect. Veuillez contrôler votre saisie"); return false; } //Conversion des caractères alphabétiques en nombre numericIban = modifIban.replace(/[A-Z]/g, function (letter) { return letter.charCodeAt(0) - 55; }); //Contrôle de la divison par 97 //Comme le nombre est trop grand il faut faire le contrôle par bloc de 5 chiffres de gauche à droite //Pour chaque bloc, on préfixe avec le modulo du bloc précédent (2 chiffres max) var modulo = 0; for(var i = 0; i < numericIban.length; i += 5){ bloc = modulo+""+numericIban.substr(i, 5); modulo = bloc % 97; } //Le modulo final doit être égal à 1 sinon l'IBAN est incorrect if(modulo != 1){ alert("Le numéro d'Iban saisi est incorrect. Veuillez contrôler votre saisie"); return false; } alert("Pierre"); if(!valid_bic(this)){ return false; } document.getElementById('patienter').style.display='block'; document.getElementById('envoyer').style.display='none'; return true; } function valid_bic() { var bic = document.forms['RIB'].elements['bic'].value; bic = bic.toUpperCase(); //Déclaration de l'expression régulière var maRegex = ""; //Le bic doit avoir une taille de 8 ou 11 if(bic.length = 8){ maRegex = /^[A-Z]{4}[F]{1}[R]{1}[A-Z0-9]{2}$/; }else{ if(bic.length = 11){ maRegex = /^[A-Z]{4}[F]{1}[R]{1}[A-Z0-9]{2}[A-Z0-9]{3}$/; }else{ alert("La longueur du BIC saisi est invalide !"); return false; } } if(maRegex.test(bic)){ return true; }else{ alert("Le BIC saisi est incorrect "+bic+" !"); return false; } return true; } </script> </head>
J'espère avoir saisi "je veux que mon BIC n'est que des caractères alphanumériques", mais ce test ne fonctionne pas et dans mon alerte j'ai bien le BIC que je veux contrôler.
Code : Sélectionner tout - Visualiser dans une fenêtre à part maRegex = /[A-Z0-9]+/;
Partager