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