PREG match и пробелы: как запретить?
Вы не указали начало и конец строки
$login_check = preg_match('#^[A-Za-zА-Яа-яЁё_-]{3,}$#', $login);
почему-то в случае с PHP шаблон разрешает использование пробелов. 
Не понял. А в каком другом языке строка "dfs" не подойдет под твой шаблон?