Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3154 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Modèle REGEXP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Modèle REGEXP

n°1658644
malinski20​06
Posté le 15-12-2007 à 13:08:42  profilanswer
 

Bonjour !
Je me suis toujours demandé qui a inventé les expressions régulières. Elles sont très pratiques, mais la syntaxe des modèles ou patterns me semblent être très difficiles. C'est pourquoi je vous demande de l'aide.
Je souhaite en fait vérifier (via la méthode test() de l'objet RegExp) si la saisie de mots-clefs dans une zone de texte html est conforme aux règles suivantes :
 
- on peut saisir un ou plusieurs mots-clefs, ex.: "aaa" ou "aaa, bbb, ccc".  
- pas de virgules dans un et un seul mot-clef.
- pas d'espace(s) avant la virgule.
- l'espace est autorisé dans chaque mot-clef, ex.: "aa aa, bb, cc" .
- l'espace est obligatoire après la virgule si on saisit plusieurs mots-clefs.
- pas de chiffres dans les mots-clefs.
- un mot-clef doit être d'une longueur de 2 caractères au minimum.  
  Les mots-clefs à une lettre ne sont pas alors acceptés.
 
Bref, l'exemple idéal (respectant ces règles !) serait :  
 
"aa, bbbb, ccc cccc, ddd" pour plusieurs mots-clefs.
 
Merci d'avance pour vos réponses ! Et bonne journée !
 
Malinski2006
 :hello:  

mood
Publicité
Posté le 15-12-2007 à 13:08:42  profilanswer
 

n°1658655
FlorentG
Unité de Masse
Posté le 15-12-2007 à 13:28:44  profilanswer
 

Je répond sur un autre point que les regexp :
 
Evite à tout prix les règles ultra-relous genre "pas d'espace avant la virgule." C'est extrêmement trivial de gérer ce cas, ça risque de faire râler l'utilisateur plus qu'autre chose...

n°1658680
malinski20​06
Posté le 15-12-2007 à 14:48:43  profilanswer
 

FlorentG a écrit :

Je répond sur un autre point que les regexp :
 
Evite à tout prix les règles ultra-relous genre "pas d'espace avant la virgule." C'est extrêmement trivial de gérer ce cas, ça risque de faire râler l'utilisateur plus qu'autre chose...


 
 
OK !
autorisons alors la syntaxe suivante : "aaa a ,aaaa , aa,aa"  
les espaces sont admis avant et après la virgule et dans les mots-clefs, pourvu seulement que les mots-clefs soient séparés par des virgules.
 
Quel en sera le modèle à appliquer ?
 

Code :
  1. var model = "  ?  " ;
  2. var oReg = new RegExp(model, "g" );
  3. document.write("test() : " + oReg.test(keywords);


 
Merci.
 
Malinski2006


Message édité par malinski2006 le 15-12-2007 à 14:52:32
n°1658699
IrmatDen
Posté le 15-12-2007 à 15:58:36  profilanswer
 

Salut,

 

Il va te falloir splitter la chaîne sur chaque virgule, et ensuite vérifier chaque élément. Tu n'es pas obligé d'utiliser les RE pour ça, mais s'il t'en faut une, je pense à celle là: ^\s?((?:[a-zA-Z]| (?=\w)){2,})\s?$

  • ^ début de ligne obligatoire pour éviter de matcher au milieu d'une expression (genre "aa24 a", sans ^ matchera le 'a' final)
  • \s? : on accepte un espace en début de mot clé, mais il n'est pas obligatoire et n'est pas capturé (suivant ton dernier exemple, mais contraire à la règle du premier message, ce qui va dans la lignée de ce qu'à dit FlorentG)
  • ((?:[a-zA-Z]| (?=\w)){2,}): Après, on capture au minimum 2 caractères qui répond à cette règle: tout caractère ou un espace suivi d'au moins un caractère
  • \s? on accepte finalement un éventuel espace non capturé juste avant la fin de ligne (cas de "ab " qui ne serait pas capturé à cause de l'espace et de la règle précédente)
  • $ : fin de ligne obligatoire (cf point précédent)


Jeu sur lequel j'ai testé:

Citation :

aaa a
aaaa
 aa
aa
a52
 ab a
b
a b
c
ba


Et les matches sont:

Citation :

aaa a
aaaa
aa
aa
ab a
a b
ba

 

Voilà, je te garantis pas qu'elle n'est pas buggée, je suis pas un guru de ces trucs là, donc teste intensivement avec ton contexte :D

 

Edit: ptite correction sur l'explication fouillis...


Message édité par IrmatDen le 15-12-2007 à 16:04:09
n°1658705
malinski20​06
Posté le 15-12-2007 à 16:29:35  profilanswer
 

Je vais faire avec ta méthode !
Merci beaucoup !
 
Malinski2006
 :)  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Modèle REGEXP

 

Sujets relatifs
Regexp un peu compliquéeModele de quelque fichier source c++ please....
optimisation de plusieurs regexp en une seule.[regexp] Extraire les lignes d'un tableau d'une page html
Erreur de compilation d'un modele simulink en mode Acceleratorun gourou de le regexp dans la salle?
[Word] style modèle attaché[MySQL] REGEXP dans un ORDER BY
defi regexp un peu compliqué..script sed regexp
Plus de sujets relatifs à : Modèle REGEXP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR