Forum Programmation.autre Expressions regulières

Posté par  .
Étiquettes : aucune
0
12
déc.
2006

Bonjour, j'aurais besoin d'un petit coup de pouce concernant les expressions regulières.

En fait j'utilise un serveur de mail open source (hmailserver), qui permet ( c'est pas le seul d'ailleurs ) d'ajouter des regles de filtrage de mail.

Je souhaite donc réaliser un filtre sur les noms de domaines presents dans le mail (champ Cc) afin de verifier qu'ils appartiennent bien aux domaines que j'administre.

La liste de Cc ressemble a ca :

<user1@mydomain.com>, <user2 …>, …. , <usern@mydomain.com>

J'ai donc creé cette expression regulière :

(<[a-z0-9._-]*@mydomain.com>,\s)+(<[a-z0-9._-]*@mydomain.com>)$

Cette expression teste donc si la liste correspond des mails correspond a mon domaine et elle fonctionne …

Sauf que je souhaite exactement l'inverse (ou le complement) de cette expression sans toucher au code de l'application ( donc pas de "!(regex)")

Merci de votre aide

  • # peut etre

    Posté par  (site web personnel) . Évalué à 2.

    vois peut etre du coté des négative lookhead
  • # any/all?

    Posté par  . Évalué à 1.

    Est-ce qu'il faut que ca match si AUCUNE des adresses n'est de ton domaine, ou si AU MOINS UNE des adresse n'est pas de ton domaine?
    • [^] # Re: any/all?

      Posté par  . Évalué à 1.

      Merci pour le cp de pouce !!!

      Il faut que ca match si au moins une des adresses n'appartient pas a mon domaine.

      Donc ceci :
      (<[a-z0-9._-]*@mydomain\.com>,\s)+(<[a-z0-9._-]*@mydomain\.com>)$

      match exactement le contraire cad si toute les adresses appartiennent a mon domaine

      Merci encore
      • [^] # Re: any/all?

        Posté par  . Évalué à 1.

        Ce que cho7 propose est ce qu'il faut alors.
        Exemple (a tester):

        /<[\w.-]+@(?!mydomain\.com)[^>]+>/

        • [^] # Re: any/all?

          Posté par  . Évalué à 1.

          ok j'ai trouvé une solution dont voici le regex :
          ^.*@(?!\bmydomain\.com\b).*$

          Par contre javoue que j'ai un peu de mal a comprendre comment ca peut fonctionner.

          En revanche, cette solution est sensible a la casse donc mon problème n'est qu'a moitié resolu car je ne trouve rien dans les expression regulière qui me permet de le rendre insensible .... a moins peut etre de rentrer toutes les solutions à la main ce qui me parait pas très elegant :
          ^.*@(?!(\bmydomain\.com\b)|(\bMydomain\.com\b)|(\bmYdomain\.com\b) | .etc...).*$

          Merci encore pour votre coup de pouce

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.