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

Algorithmes et structures de données Discussion :

Regexp d'un SIRET faisable ?


Sujet :

Algorithmes et structures de données

  1. #1
    Membre habitué Avatar de arnobase
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Points : 133
    Points
    133
    Par défaut Regexp d'un SIRET faisable ?
    Salut à tous !

    je me demandais si l'algorithme de vérification d'un numéro de SIRET était faisable avec une regexp ?

    voici l'animal :
    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
    #  function EstSiretValide(siret) {
    # var estValide;
    # if ( (siret.length != 14) || (isNaN(siret)) )
    # estValide = false;
    # else {
    # // Donc le SIRET est un numérique à 14 chiffres
    # // Les 9 premiers chiffres sont ceux du SIREN (ou RCS), les 4 suivants
    # // correspondent au numéro d'établissement
    # // et enfin le dernier chiffre est une clef de LUHN.
    # var somme = 0;
    # var tmp;
    # for (var cpt = 0; cpt<siret.length; cpt++) {
    # if ((cpt % 2) == 0) { // Les positions impaires : 1er, 3è, 5è, etc...
    # tmp = siret.charAt(cpt) * 2; // On le multiplie par 2
    # if (tmp > 9)
    # tmp -= 9; // Si le résultat est supérieur à 9, on lui soustrait 9
    # }
    # else
    # tmp = siret.charAt(cpt);
    # somme += parseInt(tmp);
    # }
    # if ((somme % 10) == 0)
    # estValide = true; // Si la somme est un multiple de 10 alors le SIRET est valide
    # else
    # estValide = false;
    # }
    # return estValide;
    # }
    <!-- Vous l'aurez reconnu, c'est du javascript mais peu importe le langage c'est l'expression régulière qui m'interesse... -->

    qu'en pensez vous ?

    Merci
    .
    La vie est un long torrent tranquile...

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    bonjour,

    à quoi sert cette partie de la fonction ?
    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
     
    var somme = 0;
    var tmp;
    for (var cpt = 0; cpt<siret.length; cpt++) 
    {
        if ((cpt % 2) == 0) 
        { // Les positions impaires : 1er, 3è, 5è, etc...     
              tmp = siret.charAt(cpt) * 2; // On le multiplie par 2
             if (tmp > 9)
                 tmp -= 9; // Si le résultat est supérieur à 9, on lui soustrait 9
        }
     else
        tmp = siret.charAt(cpt);
     somme += parseInt(tmp);
    }
      if ((somme % 10) == 0)
        estValide = true; 
      else
        estValide = false;
    Pour ne sépares-tu que les nombres impairs et pairs ?

  3. #3
    Membre habitué Avatar de arnobase
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Points : 133
    Points
    133
    Par défaut
    en fait c'est l'algorythme de Luhn qui tourne comme ca,

    L'algorithme procède en trois étapes.
    • Premièrement, un chiffre sur deux, en commançant par le deuxième jusqu'à la fin, est doublé. Si ce résultat est plus grand que neuf, ses chiffres sont additionnés (ce qui est équivalent, pour n'importe quel nombre dans l'intervalle de 10 à 18, de lui soustraire 9). Ainsi, 2 devient 4 et 7 devient 5 (=1+4).
    • Deuxièmement, la somme de tous les chiffres est effectuée.
    • Finalement, le résultat est divisé par 10. Si le reste est égal à zéro, le nombre original est valide...

    do you pense ca faisable with a regexp ???



    Mrci
    .
    La vie est un long torrent tranquile...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 488
    Points : 397
    Points
    397
    Par défaut
    Citation Envoyé par arnobase
    ...
    do you pense ca faisable with a regexp ???
    Non, pas de moyen d'effectuer un calcul avec un regexp.

    Sovitec

  5. #5
    Membre habitué Avatar de arnobase
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Points : 133
    Points
    133
    Par défaut
    je m'en doutais mais je voulais être sur...

    Merci
    .
    La vie est un long torrent tranquile...

Discussions similaires

  1. Script Siret
    Par Oberown dans le forum ASP
    Réponses: 4
    Dernier message: 14/10/2004, 12h09
  2. [langage] [RegExp] Détecter un chemin Windows
    Par GLDavid dans le forum Langage
    Réponses: 3
    Dernier message: 01/09/2004, 14h57
  3. [langage] [RegExp] Récupérer une portion de phrase
    Par GLDavid dans le forum Langage
    Réponses: 4
    Dernier message: 27/08/2004, 22h01
  4. [langage] [RegExp] Question d'expression régulière
    Par cloogy dans le forum Langage
    Réponses: 5
    Dernier message: 08/10/2003, 09h29
  5. regexp
    Par mathieu gérard dans le forum ASP
    Réponses: 4
    Dernier message: 02/10/2003, 18h05

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