Reg Ex für Mailfilter gesucht
bearbeitet von TSHallo 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](https://firasdib.com/blog/) unter <https:regex101.com>
_Rolf_
--
sumpsi - posui - clusi
Reg Ex für Mailfilter gesucht
bearbeitet von Rolf BHallo 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](https://firasdib.com/blog/) unter <https:regex101.com>
_Rolf_
--
sumpsi - posui - clusi