Jörk Behrends: Regulaeren Ausdruck in Perl verneinen

Beitrag lesen

Hallo primitives kleines Perl Problem:

»»  $daten{'email'} =~ s/([\w-+]+)@([\w-+.]+)//g;

dieser Ausdruck soll das Gegenteil von dem tun, was er jetzt macht, wenn er nicht matcht soll der Wert  von $daten{'email') auf den leeren String gesetzt werden, wie verneine ich den regulären Ausdruck, oder gibt es statt =~ einen NOT =~ Operator ?

$daten{'email'} = '' if $daten{'email'} !~ m/[1]+@[\w-+.]+$/;

Achtung: es gibt auch email-Adressen, die mit weiteren Sonderzeichen (zumindest vor dem @)
arbeiten: '_' und auch '.'. Das Zeichen '_' ist jedenfalls in \w enthalten - aber somit ja auch bei den
Domains möglich ...
Möchtest Du weiterhin sicherstellen das eine korrekte Domainn angegeben wurd, so solltest Du
mindestens einen Punkt erwarten. Die Toplevel-Domain besteht denn eh nur aus Buchstaben:

m/[2]+@[\w-+.]+.[a-zA-z]+$/

Jörk


  1. \w-+ ↩︎

  2. \w-+ ↩︎