Something along these lines:
( NOT Match(GetText(),~"[^A-Za-z0-9\.@_\-]~") OR NOT (Match(GetText(),~"[@+]~") AND Match(GetText(),~"[/.+]~"))) AND NOT (pos(GetText(), ~".~") = 1 OR pos(GetText(), ~".~", Len(GetText())-1) = Len(GetText()) OR...