Contrôle d'une expression régulière pour un BIC
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:
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).
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 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 é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:
maRegex = /[A-Z0-9]+/;
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.