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

Langage PHP Discussion :

Code postal valide si en dehors d'un département donné.


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Octobre 2017
    Messages : 1
    Par défaut Code postal valide si en dehors d'un département donné.
    Débutant dans ce domaine, j'ai besoin d'une expression régulière pour décider d'afficher ou non une question dans le logiciel d’enquête LimeSurvey
    Et je ne trouve pas l'expression régulière valide pour s'assurer qu'un code postale n'appartient pas à un département donné .

    Par exemple, pour afficher un message indiquant que le code postal saisi n'est pas un code postal du département 26, j'utilise l'expression régulière [^(26)][0-9][0-9][0-9] et elle ne me semble pas totalement correcte....

    Merci pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pas besoin de regex pour ça.

    On compare les 2 1ers caractères :



    Attention cependant à la Corse (2A, 2B)

  3. #3
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    3 018
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 3 018
    Par défaut
    Je viens de regarder la page du manuel de LimeSurvey sur les expressions régulières. Je n'ai jamais vu une telle concentration d'âneries de ma vie. (patterns mal écrites, naïves ou complètement fausses). On a l'impression en voyant ça que les rédacteurs ont copié/collé le premier résultat de leur moteur de recherche sans se poser la moindre question. C'est dingue de trouver ça dans la documentation d'un produit qui coûte 350€ ou 850€ par an pour les versions pro.
    Cerise sur le gâteau, il n'y a ni tableau avec les fonctionnalités disponibles, ni le moteur de regex utilisé. Ils auraient pu remplacer leur fourbi de 200 lignes par "bonne chance!" que ça aurait été pareil!

    [EDIT]J'ai été un peu dur, il y a une autre page, plus ancienne (2013) l'autre étant de 2017, avec des informations utiles. Mais les patterns ne sont pas meilleurs![/EDIT]

    Bref, pour ce qui est de la question, si tu as un quelconque moyen d'éviter la regex pour faire ça, n'hésite pas (recherche de la position de 26 dans la chaîne, ou une opération arithmétique avec division entière par 1000 puis une comparaison...).

    Si tu es obligé de passer par une regex, essaie d'inverser ton test et d'afficher tout ce qui ne matche pas la pattern:/^26/.

    Sinon tu devras écrire une pattern qui décrit tout ce qui ne commence pas par 2 ou tout ce qui commence par 2 mais non suivi de 6: ou en décrivant précisément toute la chaîne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^([013-9][0-9]{4}|2[0-5789][0-9]{3})$/
    (ces deux patterns n'utilisent pas de fonctionnalités particulières, il y a de grandes chances qu'elles fonctionnent.)
    Le plus court serait d'utiliser un test avant négatif mais vue la doc, impossible de savoir à quoi s'en tenir. À tester donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^(?!26)/ # début de chaîne non suivie de 26
    ou pour la chaîne entière.

    En ce qui concerne ton essai de pattern, attention [....] définie une classe de caractères et une classe de caractères est juste un sac avec des caractères dedant qui n'ont ni ordre ni signification particulière. Donc quand tu écris [^(26)] tu représentes un seul caractère qui ne peut pas être une parenthèse ou un deux ou un six. Les parenthèses à l'intérieur ne groupe rien. Seul le caractère ^ au début de la classe exprime la négation.

Discussions similaires

  1. [RegEx] Code Postal non validé
    Par SpaceFrog dans le forum Langage
    Réponses: 2
    Dernier message: 16/06/2008, 15h53
  2. Validation de code postal au moment de la saisie
    Par cerede2000 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/05/2007, 12h43
  3. type de colonne pour numéro de tél et code postal
    Par molesqualeux dans le forum Requêtes
    Réponses: 2
    Dernier message: 19/01/2006, 14h19
  4. pb pour la validité d'un code postal
    Par hoaxpunk dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 14/12/2005, 11h35
  5. novice: code postale et ville
    Par Chico_Latino dans le forum Access
    Réponses: 5
    Dernier message: 15/11/2005, 20h03

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