in fact the part of the e-mail after the @ is also a domain, so the same rules apply to e-mail addresses. Also, for links you must also match the part that comes after the domain
(besides, .us and .de identify the country, not domain type - USA and Germany, respectively)
this might work better:
$regex = '@(http|ftp|https)://[a-z0-9\-]+(\.[a-z0-9\-]+)*(/[^ ]*)?@i';
$string = preg_replace ($regex,'<link removed>',$string);
$regex = '/[a-z0-9\-]+(\.[a-z0-9\-]+)*@[a-z0-9\-]+(\.[a-z0-9\-]+)*/i';
$string = preg_replace ($regex,'<e-mail removed>',$string);
this catches some invalid urls and e-mail adresses but should remove any of them