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 :

aide sur deux regex [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut aide sur deux regex
    bonsoir les régex c'est jamais évidement j'aurai besoin d'aide

    j'essaie de faire un regex qui autorise:
    les minuscules,
    les majuscules,
    les numéros,
    le tiret,
    le underscore

    j'essaie de faire un regex qui autorise:
    les minuscules,
    les majuscules,
    les numéros,
    le tiret,
    le underscore,
    é commerciale &,
    les parenthèses,
    les deux points,
    l'espace
    les quotes ' (interdire 2 à coter !)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #^[a-zA-Z0-9-\&\s_:'\(\)]+$#
    est-ce que vous pouvez m'aider à améliorer ce que je veux faire j'ai du mal.

    merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    trois remarques ou questions :

    1/ pour autoriser le tiret, il doit être placé en premier ou en dernier dans ta classe, sinon il indique un intervalle (comme dans [a-z])

    2/ que veux-tu faire des lettres accentuées ?

    3/ on est bien d'accord que tu utilises les fonctions preg_... ?

    Première regex :


    Seconde regex :

    Pour l'interdiction de deux apostrophes côte à côte, je pense que le plus simple est de le vérifier avec un petit strstr.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    merci de m'aider.

    alors j'utilise preg_match.

    en faite pour que tu comprennes mieux:

    le 1er regex doit vérifier le nom de l'artiste.
    lettres accentuées ? oui autorisés

    le 2nd regex doit vérifier le titre d'une musique.
    lettres accentuées ? oui autorisés

    il existe pas des sites officiels de sécurité avec des regex pré-établie ?


    EDIT:

    finalement jvais garder:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #([a-zA-Z0-9&():'_-]+)#
    pourquoi le @ passe ?

    comment on fait en regex pour dire que ces 7 caractères ne peuvent pas être côte à côte ?

    exemple:
    --
    &&
    ''
    __

  4. #4
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Application du principe "unrolling the loop"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $arr = array('Jean-Marc', 'Jean--Luc', "O'Conner", 'Pierre&Vacances', 'Foo&&Bar', "Bad-Quote'");
     
    foreach($arr as $str) {
        $normal     = '[a-zA-Z0-9]';
        $special    = "[&():'_-]";
        $notSpecial = "[^&():'_-]";
        $reg = "#^ $normal+ (?: $special $normal+ )* $#x";
        preg_match($reg, $str, $m);
        print_r($m);
    }

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 625
    Par défaut
    merci s.n.a.f.u, je vais essayer de comprendre ton code...

  6. #6
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    [ame="http://www.google.fr/search?source=ig&hl=fr&rlz=1G1GGLQ_FRFR266&=&q=regex+unrolling+the+loop&btnG=Recherche+Google&meta=lr%3D&aq=f&oq="]regex unrolling the loop - Recherche Google[/ame]

    Et encore mieux, la bible sur les regex en fait un chapitre entier sur ce principe : http://general.developpez.com/livres...L9780596528126

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. aide sur une regex
    Par danathane dans le forum Langage
    Réponses: 2
    Dernier message: 03/08/2010, 15h36
  2. [Regex C#] Aide sur une regex qui recupere des controles
    Par kerjon dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 14/05/2009, 14h10
  3. aide sur un regex.
    Par Flopp dans le forum C#
    Réponses: 0
    Dernier message: 13/04/2009, 20h10
  4. Aide sur les regex
    Par etranger dans le forum Langage
    Réponses: 12
    Dernier message: 30/08/2006, 22h32
  5. une aide sur un regex svp :)
    Par hansaplast dans le forum Langage
    Réponses: 2
    Dernier message: 19/10/2005, 11h22

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