Je cherche une expression régulière

abdou -  
 Utilisateur anonyme -
Bonjour,
je débute avec les expressions régulières. je me suis poser la question: comment je peut filtrer une chaine pour que les les chaines valides soient: abc , xyz, 123, abc123 , xwz123 ou rien
j'ai essayé avec l'expression ci-dessous mais ça n'a pas marcher

^((abc)|(xwz))?(123)?$

cette expression accepte aussi: ab123,yz23,..
comment faire?
et merci

4 réponses

Doctor C Messages postés 630 Date d'inscription   Statut Membre Dernière intervention   399
 
Quand tu dis "cette expression accepte aussi: ab123,yz23,.. ", veux-tu dire que ton expression régulière doit accepter ces chaînes de caractères (ab123, yz23, etc)?

Sinon, si les seules chaînes de caractères que tu peux accepter sont les six mentionnées ci-dessus (abc , xyz, 123, abc123 , xwz123 ou rien), je ne vois pas l'intérêt de faire une expression régulière, juste un if avec quelques OR et tout est terminé.
0
Utilisateur anonyme
 
@Doctor C:
je débute avec les expressions régulières
Je suppose donc que c'est pour qu'il comprenne le fonctionnement =)

sinon :
((abc|xwz){0,1}(123){0,1})
devrait te convenir.

naga
0
Doctor C Messages postés 630 Date d'inscription   Statut Membre Dernière intervention   399
 
Je suppose que tu as raison!

Sinon, vos deux expressions devraient fonctionner. Personnellement, je ferais un mélange de vos deux expressions:

(abc|xwz)?(123)?
0
Utilisateur anonyme
 
mmh, j'ai été trop permissif, le mien permet de récupérer les correspondance dans un texte. Il faudra rajouter les identifiant de début et fin de chaine (^ $).
0