Je cherche une expression régulière

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

  • Votes
  • Date
  • Date décroissante
  1. 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é.
    1. @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
      1. 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)?
        1. 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 (^ $).