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

JavaScript Discussion :

Formater des numéros de téléphone ? Comment gérer les différentes 'syntaxes' ?


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 163
    Points : 59
    Points
    59
    Par défaut Formater des numéros de téléphone ? Comment gérer les différentes 'syntaxes' ?
    Bonjour,

    J'ai des <input> qui sont sensés contenir des numéros de téléphone dont l'origine est vaste : Belgique (fixes et gsm) par défaut, mais aussi France et d'autres pays.
    J'aimerais faire en sorte qu'ils soient formatés correctement lorsque l'utilisateur les tape dans un <input>. Par exemple :
    • 0497567678 soit affiché 0497 56 76 78 (car il s'agit d'un numéro de GSM belge et le préfixe compte alors 4 chiffres)
    • 042754789 soit affiché 04 275 47 89 (car c'est un numéro belge et le préfixe est 04)
    • 023546576 soit affiché 02 354 65 76 (car c'est un numéro belge et le préfixe est 02)
    • 061567678 soit affiché 061 56 76 78 (car c'est un numéro belge et le préfixe est 061 -- oui, il y a des préfixes à 2, 3 ou 4 chiffres...)
    • +33145303030 soit affiché +33 1 45 30 30 30
    • etc...

    Un détail (mais j'ignore si cela a de l'importance) : je sauve ces numéros de téléphone dans une base de données et pour le moment, je les sauve sans formatage (donc sans espaces, mais uniquement des chiffres et le caractère +).

    Est-ce que vous connaissez des fonctions/librairies qui formatent correctement tous les numéros de téléphone ??

    Merci pour vos conseils !

    T.

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut


    Je suis très faible en RegExp, mais j'ai trouvé, sur le web, une méthode pour trier les fixes des mobiles :

    Code JavaScript : 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
    const
        pattern = /^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2}){2}$/,
        pattern_mobile = /^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/;
     
    let arTel = [
        '0497 56 76 78',
        '0497567678',
        '04 275 47 89',
        '04-275-47-89',
        '02 354 65 76',
        '023546576',
        '061 56 76 78',
        '061-56-76-78',
        '+32 497 56 76 78',
        '+32 4 275 47 89',
        '+32 2 354 65 76',
        '+32 61 56 76 78',
    ];
     
    for (let tel of arTel) {
        tel = tel.replace(/-/g, ' ');
        console.log('********\n', tel);
        console.log('fixe = ', pattern.test(tel));
        console.log('mobile = ', pattern_mobile.test(tel));
    }

    Par contre ces patterns ne conviennent pas pour les inputs, lorsqu'on essaie de valider c'est toujours faux !

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <form>
        <label>Tél belge fixe : </label>
        <input type="tel" pattern="/^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2}){2}$/">
        <br>
        <label>Tél belge mobile : </label>
        <input type="tel" pattern="/^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/">
        <br>
        <button type="submit">Valider</button>
    </form>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 163
    Points : 59
    Points
    59
    Par défaut
    Et cela, ce n'est encore que pour la belgique... J'ai des numéros de téléphone qui arrivent d'un peu partout donc... Je pense que c'est complexe et qu'il y a sans doute une librairie pour faire cela bien, non ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 163
    Points : 59
    Points
    59
    Par défaut
    J'ai trouvé ceci qui semble intéressant : https://github.com/googlei18n/libphonenumber

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Je ne sais pas ce que cela vaut, mais il y a des services payants.

    Par exemple : https://www.address4.com/fr/services...o-de-telephone

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 163
    Points : 59
    Points
    59
    Par défaut
    Ok ma question n'est pas claire, visiblement.
    1) je souhaite qu'une personne qui introduit un numéro de téléphone dans un champ <input> voie ce numéro de téléphone correctement formaté. Et je souhaite pouvoir "extraire" de l'<input> la version non formatée pour pouvoir la stocker dans une base de données.
    2) je souhaite pouvoir formater correctement un numéro de téléphone qui est stocké sans formatage dans une base de données.

    Il n'est pas question de valider quoi que ce soit, comme il n'est pas question de payer quoi que ce soit car j'imagine que des librairies qui formattent correctement existent (celle de Google semble être un exemple). Reste à voir comment les utiliser et je n'ai pas encore eu le temps de me pencher dessus.

    Si quelqu'un a déjà eu cette problématique et s'en est sorti facilement, je serai heureux de savoir comment...

Discussions similaires

  1. Réponses: 12
    Dernier message: 17/07/2014, 10h45
  2. Réponses: 22
    Dernier message: 13/11/2011, 19h05
  3. Réponses: 2
    Dernier message: 24/03/2011, 15h18
  4. Comment gérer les différentes actions
    Par Stolker dans le forum Langage
    Réponses: 1
    Dernier message: 20/06/2008, 17h27
  5. Réponses: 3
    Dernier message: 19/05/2006, 11h05

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