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 :

regexp qui accepte les caractères numériques et les tirets [RegExp]


Sujet :

JavaScript

  1. #21
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 500
    Billets dans le blog
    1
    Par défaut
    Merci, j'ai finalement retenu cette regexp, légèrement arrangée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^[+]?\d(?:[-\s\,]?\d)+$/
    à laquelle j'ai rajouté un traitement (code piqué sur le web (et aussi légèrement modifié) pour m'assurer que le numéro comporte au moins 7 chiffres (je ne connais pas tous les formats, donc je prends de la marge)) :
    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
    function substr_count( haystack, needle, offset, length ) {
    var pos = 0, cnt = 0;
    if(isNaN(offset)) offset = 0;
    if(isNaN(length)) length = 0;
    offset--;
    i=0;
    for (i=0;i<needle.length;i++) {
    while( (offset = haystack.indexOf(needle[i], offset+1)) != -1 ){
    if(length > 0 && (offset+needle[i].length) > length){
    return false;
    } else{
    cnt++;
    }
    }
    }
    return cnt;
    }
    var sOcc = ['0','1','2','3','4','5','6','7','8','9'];
    var iCpt = substr_count (objForm.officenumber.value, sOcc);
    Je peux donc cocher "résolu" et j'en profite quand même pour vous montrer à quoi ça sert. Voici une version non confidentielle du site sur lequel je travaille. J'ai supprimé ici la mise à jour de la base de donnée (MySQL), l'envoi des mails et l'affichage des données confidentielle. Si on fait "list of participants", ça va quand même chercher les infos dans la base de données. Ce qui est sympa (et testable), c'est l'upload des photos (c'est un plugin jQuery, donc en js, mais ce plugin appelle lui-même un script PHP qui fait l'upload). (Et c'est un code js horriblement compliqué). Ce qui est sympa aussi, c'est l'agenda : un ppt converti en flash. Normalement, ça devrait être de l'intranet, mais comme c'était urgent, j'ai squatté l'espace internet d'une assoc (mais c'est transparent pour eux). Et si on fait "list of participants", on comprend la nécessité de tester les codes internationaux car il y a déjà US, Inde, Chine, Italie, Suède...et France

  2. #22
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 661
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^[+]?\d(?:[-\s\,]?\d)+$/
    pas de rappel du séparateur ...
    tu peux donc avoir entre chaque groupe de chiffres un séparateur différent ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #23
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 500
    Billets dans le blog
    1
    Par défaut
    Non, je ne pense pas. J'avoue que je n'ai pas cherché à m'inspirer du code que tu avais donné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^(\d{2}([ .-]))(\d{2}\2){3}\d{2}$
    mais je ne saurais pas faire de toute façon.

  4. #24
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 500
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 500
    Billets dans le blog
    1
    Par défaut
    J'ai la fierté d'annoncer que finalement, j'ai pû m'inspirer du truc de Spacefrog pour faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var re3 =/^[+]?(\d{2,4}([-\,\s]))?(\d{2,4}\2){2,3}(\d{2,4})$/;
    ce qui couvre tous les cas de figure et est moins laxiste que la proposition de Loceka.
    Je tiens quand même à remercier kimjoa qui avait fait un code qui marche et que j'avais commencé à utiliser (avant que n'arrive la proposition de Loceka). Mais ce que j'ai fait est moins laxiste car avec la proposition de Loceka, il était possible de saisir un nombre uniquement composé de séparateurs. Avec celle que j'ai faite, on a entre 3 et 5 blocs composés de 2 à 4 chiffres et d'un séparateur optionnel qui peut être un tiret, une virgule ou un espace. Et de plus, il est impossible d'avoir 2 séparateurs différents.
    Mais j'ai quand même rajouté une deuxième regexp pour traiter le cas des US, où il peut y avoir deux sépérateurs (un tiret et un espace) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var reUS=/^([+]1)?(\d{3}\s\d{3}-\d{4}$/;

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. récupérer les caractères numériques
    Par le_chomeur dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 14/11/2008, 16h58
  2. Réponses: 2
    Dernier message: 08/07/2008, 11h50
  3. Réponses: 6
    Dernier message: 10/09/2007, 10h44
  4. JavaScript/Zone de texte : n'accepter que les caractères numériques
    Par arkienou dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/07/2006, 14h16
  5. Réponses: 5
    Dernier message: 09/05/2006, 13h27

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