помогите составить регулярное выражение

  • Автор темы Автор темы terex
  • Дата начала Дата начала

terex

Guest
помогите составить регулярное выражение

Нужно написать выражение, проверяющее правильность имени пользователя, регистрирующегося на форуме. Проблемы вызывает следующий момент: ник может состоять из символов _ A-Z a-z А-Я а-я и пробела. Но надо сделать так, чтобы ники, в которых использованы символы из обоих алфафитов (кирилицы и латиницы) не проходили проверку на валидность.

Пишу так:

/^[[_A-Za-z0-9 ]|[_А-Яа-я0-9 ]]{3,40}$/

Не работает. В смысле, строки с кирилицей и латиницей вперемешку проходят проверку :( Как правильно?
 
Спасибо!

А тепер главное - почему мой вариант не работает? :))
 
[[_A-Za-z0-9 ]|[_А-Яа-я0-9 ]] - не правильно.
[] обозначает даипазон символов, в нем | обозначет такой символ, а не разделитель альтернативных групп.
Еще проще:
^[_A-Za-zА-Яа-я0-9 ]{3,40}$
 
Чисто теоретический вопрос, а зачем в имени пользователя на форуме пробел?
Вопрос второй, зачем квантификатор стоит {3,40}?

мой ответ:
preg_match("/(?(?=[^a-z]*[a-z])^[_a-z\s]{3,40}$|^[_а-я\s]{3,40}$)/i","ыдdfdf", $matches);
print_r($matches);
прошу тестировать
 
IntenT
Тебе что меня повоспитывать захотелось? Удачи!

Кстати, ответ во втором посте, если вчитаться слово в слово, неправильный. К тому же я попросил протестировать мой вариант решения и ответить на два чисто теоретических вопроса.
 
Сверху