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 :

[PCRE] optimisation du motif


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 8
    Par défaut [PCRE] optimisation du motif
    Bonsoir,

    les PCRE n'étant pas ma tasse de thé , je viens faire appel aux Pros dans ce domaine pour me donner quelques conseils sur la marche à suivre


    Usage : j'utilise un script de validation en javascript pour valider un champ soumis à l'utilisateur dans un formulaire .

    vu que le script JS fait plus de 400 lignes je vais donc me contenter de poster l'essentiel :

    à la base (état d'origine du script ) pour valider un champ alpha

    le motif était le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return FormValidator.getValidator('IsEmpty').test(element) ||  /^[a-zA-Z]+$/.test(element.getValue())
    vous conviendrez que cela n'a pas trop d'intérêt pour la lang FR

    donc je me suis mis en tête de pourvoir vérifier et autoriser :

    - aucun espace en début et fin de chaine
    - une chaine avec des accents
    - une chaine avec un blanc (espace pour les mots composés)
    - une chaine avec apostrophe

    voici ce que j'ai réussi à goupiller qui rempli parfaitement les 4 options:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return FormValidator.getValidator('IsEmpty').test(element) ||  /^([a-zA-Z\'éèàêâùïüëçô]+|[a-zA-Z\'éèàêâùïüëçô]+(\s)?[a-zA-Z\'éèàêâùïüëçô])+$/.test(element.getValue())
    1/ Je pense que l'on peut l'optimiser mais je ne trouve rien de mieux qui aille.

    2/ Là ou je galère grave , c'est que pour bien faire , il faudrait instaurer des intervalles de reconnaissance {1} pour que la chaine envoyée ne puisse jamais avoir : des doublons côte à côte avec les caractères spéciaux .

    du style " rue de la forêêt "

    Merci pour toute aide

  2. #2
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    je n'ai pas compris ce que tu cherches à valider. toute la langue française ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 8
    Par défaut
    presque !

    en fait je veux surtout éviter les étourdis qui me valideraient un champ mal rempli , qui pour moi aurait pour conséquence de le corriger !

    donc ce script se charge de faire les préliminaires avant soumission.

    car dans certains cas ce champ pourrait faire parti du titre d'un article , le nom d'une rue ...

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    \w ca prend les accents au pire fait un \X, tu prend pas en compte les tirets les vigules les points ? et pourquoi ne pas faire un trim sur la valeur ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 8
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    \w ca prend les accents au pire fait un \X, tu prend pas en compte les tirets les vigules les points ? et pourquoi ne pas faire un trim sur la valeur ?
    oui , je ne sais pas pourquoi le script n'a pas pris les accents avec \w lors de mes premiers tests ... j'avais pourtant opté pour ce raccourcis

    merci pour ces conseils , je vais réessayer voir ce que ça donne

  6. #6
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    Citation Envoyé par TractorBeam Voir le message
    presque !
    tu vas avoir du mal, la langue française ne se laissera pas mettre en expression régulière aussi facilement
    par exemple refuser 2 caractères accentués de suite n'est pas bon puisqu'il existe des mots comme "créées" par exemple

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 8
    Par défaut
    Citation Envoyé par nosferapti Voir le message
    tu vas avoir du mal, la langue française ne se laissera pas mettre en expression régulière aussi facilement
    par exemple refuser 2 caractères accentués de suite n'est pas bon puisqu'il existe des mots comme "créées" par exemple
    bien pensé ! alors on fait une exception , non mais t'as raison ! là je pousse un peu loin le bouchon ...

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    pas besion d'exception faut juste autoriser les bon caractères ce qui donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /^(?!\s+)[\w\u0020\u0027\u00e0-\u00ef\u00f1-\u00f6\u00f9-\u00fd\u00ff]+(?!\s+)$/i

Discussions similaires

  1. [RegEx] [Optimisation] Vérification motifs dans chaîne
    Par 0.GeGe.0 dans le forum Langage
    Réponses: 15
    Dernier message: 03/06/2014, 17h32
  2. Optimisation de votre SGBDR et de vos requêtes...
    Par SQLpro dans le forum Langage SQL
    Réponses: 35
    Dernier message: 11/01/2013, 11h49
  3. [RegEx] Motif simple mais introuvable pour PCRE
    Par Tchupacabra dans le forum Langage
    Réponses: 15
    Dernier message: 09/06/2008, 11h51
  4. [VB6] [Graphisme] Floodfill et motif
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 03/12/2002, 09h35
  5. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 10h24

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