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