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:
- Ab Beginn des Strings x (x=1...n) Zeichen, die nicht @ sind.
- Nach diesen x Zeichen muss das Stringende folgen.
- 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$)[^@]+$
- Ab Stringanfang 1-N Zeichen die kein @ sind
- Dann ein @
- Ab hier ein negative Lookahead: Es darf nicht firmenname.de und dann das String-Ende kommen
- 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