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 Java Discussion :

expressions regulieres - interdire une chaine


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    42
    Points
    38
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 42
    Points : 38
    Par défaut expressions regulieres - interdire une chaine
    Bonjour,

    Je bloque avec un souci sur les expressions régulières. En fait je voudrais valider un mot de passe pour un site web.
    En utilisant les expressions régulières je m’assure qu’il est assez fort.
    Maintenant je veux empêcher que l’utilisateur utilise certains mot clé considérés comme trop faciles a pirater (Liste définie et fixe comme le nom du site web …).
    Et la je bloque pour le coup.
    Disons que je veux empêcher que le mot de passe soit (ou contienne) Parapluie (bon c'est un exemple hein).

    J’ai essaye avec [^ ……]. Mais je pense pas que ce soit possible
    J’ai essaye avec le modèles : (?![Pp]arapluie) . Mais je n’ai pas réussi.

    Est-ce que quelqu’un a une idée comment faire ?

    Merci

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Points
    4 314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Par défaut
    Tu cherches à faire trop compliqué, à mon avis... Un algorithme de ce style devrait suffire à ton besoin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Pour chaque (motInterdit) { 
        Si(motDePasse == motInterdit) {
            return false;
        }
    }
    return true;

  3. #3
    Invité
    Invité(e)
    Par défaut
    on peut aussi utiliser la méthode contains de String avec un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public boolean isValid(String mdp) {
      for(String mot: blackList) {
        if(mdp.toLowerCase().contains(mot)) {
          return false
        }
      }
      return true;
    }
    Le toLowerCase permet d'interdire les choses genre "PaRApluIe"
    bloackList est une collection de chaines qui contient tous les mots interdits

    A plus

    EDIT : ok j'avais mal lu, j'interdis que le mot soit présent, mais apparemment il ne faut pas que ce soit juste ce mot...
    Dernière modification par Invité ; 20/11/2009 à 15h40. Motif: oups

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    42
    Points
    38
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 42
    Points : 38
    Par défaut
    Citation Envoyé par CyberChouan Voir le message
    Tu cherches à faire trop compliqué, à mon avis... Un algorithme de ce style devrait suffire à ton besoin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Pour chaque (motInterdit) { 
        Si(motDePasse == motInterdit) {
            return false;
        }
    }
    return true;
    C'est un peu plus complique que ca. Je peux pas toucher le code JAVA.
    L'application existe et fonctionne à base d'expression Régulière dans un fichier externe. Je ne peux toucher que ce fichier externe. Donc seulement l'expression régulière

  5. #5
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 639
    Points
    15 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 639
    Points : 15 874
    Par défaut
    Dans ce cas la ton idée d'utiliser les lookaround est bonne mais il faut préciser également la chaine que tu acceptes:
    Par exemple si tu veux interdire que le mot de passe contienne Mot1 et Mot2, tu peux faire:
    (?!.*Mot1.*)(?!.*Mot2.*).*

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Points
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Points : 3
    Par défaut
    Bonjour. J'ai exactement le même problème. Je suis tombé sur ce sujet (après avoir cherché et galleré toute l'aprem), et j'ai essayé ta réponse de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern pattern = Pattern.compile("id: "+go.getId()+"(?!.*\\n\\n.*).*is_a: ([A-Z]{2}:\\d{7})");
    je veux qu'entre 'l'id de go' (go.getId()) et le terme 'is_a', tous les caractère sauf l'enchainement de deux \n (je veux pas qu'il y ai 2 sauts de ligne d'affilé).Mais ça ne marche pas. Ai je mal utilisé l'expression?

    que signifie les .* qui entourent .*Mot1.*, et celui a l'extérieur de la parenthèse?

    Merci d'avance.

  7. #7
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 639
    Points
    15 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 639
    Points : 15 874
    Par défaut
    Bizarre, cela semble bien marcher chez moi.
    Par contre pour que l'expression régulière fonctionne il faut que tu utilises le paramètre Pattern.DOTALL ou que ton expression régulière commence par "(?s)" sinon le "." ne gère pas le retour chariot

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    3
    Points
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Points : 3
    Par défaut
    D'accord.

    Bon merci pour le DOTALL (moi je faisais un peu le bourrin en utilisant [\\s\\S]).

    Sinon pour l'expression regulière, moi je veux qu'il n'y ai pas de double saut de ligne entre l'id et le is_a.
    Mais cette expression ne marche que pour la dernière personne, c'est a dire celle à la fin de mon fichier (là où aucun double saut de ligne suit). Mais moi j'en veux pas juste entre le id et is_a.
    Voyez vous d'où vient le problème?

    En tout cas merci de me répondre et de me faire avancer

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/02/2010, 14h13
  2. Réponses: 2
    Dernier message: 31/07/2007, 15h23
  3. Réponses: 4
    Dernier message: 29/05/2006, 16h27
  4. [RegEx] preg_replace et interdir une chaine
    Par jojo22222 dans le forum Langage
    Réponses: 9
    Dernier message: 19/02/2006, 22h46
  5. Réponses: 6
    Dernier message: 08/06/2004, 15h22

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