Rolf B: Reg Ex für Mailfilter gesucht

Beitrag lesen

Hallo Matthias,

den Haken kann ich nicht wegnehmen, das kann nur Friedel. Drum hab ich ein Minus gesetzt.

Diese Regex funktioniert nicht.

^[^@]+(?!@firmenname\.de)$ bedeutet:

  1. Ab Beginn des Strings x (x=1...n) Zeichen, die nicht @ sind.
  2. Nach diesen x Zeichen muss das Stringende folgen.
  3. Nach diesen x Zeichen darf nicht @firmenname.de stehen.

Problem 1: Satz 1 und 2 führen dazu, dass keine gültige Mailadresse matcht (weil die immer ein @ enthält)
Problem 2: Der Punkt, ab dem der Lookahead schaut, ist das Stringende. Da steht niemals @firmenname.de

Entweder so: ^[^@]+@(?!firmenname\.de$)[^@]+$

  1. Ab Stringanfang 1-N Zeichen die kein @ sind
  2. Dann ein @
  3. Ab hier ein negative Lookahead: Es darf nicht firmenname.de und dann das String-Ende kommen
  4. 1-N Zeichen die kein @ sind

Das $ im Lookahead ist wichtig, sonst würde aufdringlich@example.deals akzeptiert (wenn denn "example.de" die richtige Firmenadresse wäre.

Alternativ kann man mit einer Lookbehind-Assertion (?<!...) arbeiten, dann geht's so:

^.*(?<!@firmenname.de)$

Diese Regex matcht alles, was nicht mit @firmenname.de endet. Dass vor dem @ kein weiteres @ mehr stehen darf, wird ignoriert, ist auch nicht wichtig für die Filterung. Hoffe ich...

Regexe bauen, testen und lernen geht dank Herrn Firas Dib unter https://regex101.com

Rolf

--
sumpsi - posui - clusi