PREG match и пробелы: как запретить?

Доброго времени суток.

Выполняю в форме регистрации и на стороне сервера проверку логина таким шаблоном:

$login_check = preg_match("/[A-Za-zА-Яа-яЁё\-\_]{3,}/", $login);


И почему-то в случае с PHP шаблон разрешает использование пробелов. А я их здесь ну в упор не вижу. Почему так, и как запретить пробелы?

Спасибо.

P. S. И вообще этот шаблон почему-то возвращает 1 даже для такой белиберды:
dfsdfs 35`12`12`12````1223*df
  • Вопрос задан
  • 3002 просмотра
Решения вопроса 2
abler98
@abler98
Software Engineer
Вы не указали начало и конец строки
$login_check = preg_match('#^[A-Za-zА-Яа-яЁё_-]{3,}$#', $login);
Ответ написан
Audiophile
@Audiophile Автор вопроса
Якоря начала ^ и конца $ строки решили проблему.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
почему-то в случае с PHP шаблон разрешает использование пробелов.

Не понял. А в каком другом языке строка "dfs" не подойдет под твой шаблон?
Ответ написан
Комментировать
Может кривое решение, зато работает:
$l = strlen($login);
$login_check = preg_match("/[A-Za-zА-Яа-яЁё\-\_]{" . $l . " ,}/", $login);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы