Marko: Regulaeren Ausdruck in Perl verneinen

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 ?

Gruss

Marko

  1. 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-+ ↩︎