Тестировал так
$login = 'Login';
if (!preg_match("|^\D[A-Za-z0-9\.\_\-]{3,19}$|",$login)){
echo 'Используйте буквы англ. языка и цифры.';
}else{
echo 'Всё в норме!';
}З.Ы. Здесь \_\- обратные слеши можно и не ставить, потому что в условии подчеркивание и минус стоят в конце и означают именно сами себя.