Проверил на локалке, работает.
/*
нужен логин, в котором можно использовать латинские буквы -_ и точку, при этом логин не с цифры должен начинаться
*/
if (!preg_match('~^[^\d][a-z\d\._-]+~i', $login)) {
$error['login'][] = 'Используйте буквы англ. языка и цифры.';
}