![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Pitbul |
|
|||
![]() Fruzenshtein ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 30.4.2008 Где: Киев Репутация: нет Всего: нет |
Добрый день
Составляю регулярное выражение для проверки логина. Критерий таков: Могут быть такие символы: А-Я, а-я, A-Z, a-z, 0-9, "-", "_", "." И длина логина находится между 3 и 30 символами. Я составил такое выражение:
Но оно не дает необходимого результата. Помогите найти верное решение этой задачи. Спасибо --------------------
### JAVA ###### programming ### |
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
Если строка с логином в юникоде, то необходимо добавить модификатор u.
|
|||
|
||||
| Pitbul |
|
|||
![]() Fruzenshtein ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 30.4.2008 Где: Киев Репутация: нет Всего: нет |
enoff у меня данные приходят из формы, которая имеет charset=windows-1251
И увы, приведенное Вами регулярное выражение, приводит к ошибке --------------------
### JAVA ###### programming ### |
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
Pitbul, ну это понятно, что к ошибке, строка-то не в юникоде, это просто было мое предположение.
Регулярка правильная. Попробуйте выставить локаль. http://php.net/set_locale |
|||
|
||||
| Pitbul |
|
|||
![]() Fruzenshtein ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 30.4.2008 Где: Киев Репутация: нет Всего: нет |
enoff
Очень важное замечание на счет ЛОКАЛИ, помогло решить проблему. В таком виде все работает превосходно:
Но теперь смежный вопрос по поводу раскладки UA. С Украинским текстом эта регулярка не дружит. Можно ли с помощью функции setlocale() указать перечень алфавитов? --------------------
### JAVA ###### programming ### |
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
uk_UK?
|
|||
|
||||
| Pitbul |
|
|||
![]() Fruzenshtein ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 30.4.2008 Где: Киев Репутация: нет Всего: нет |
UK_uk - это для Англии, а мне надо для Украины (UA_ua)
--------------------
### JAVA ###### programming ### |
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
||||
|
||||
| Pitbul |
|
|||
![]() Fruzenshtein ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 30.4.2008 Где: Киев Репутация: нет Всего: нет |
enoff
Действительно UK И все же можно выше приведенное регулярное выражение заставить корректно работать одновременно для rus, en и uk шрифтов? --------------------
### JAVA ###### programming ### |
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
cp1251 содержит символы украинского алфавита, насколько я знаю...
Добавлено через 15 секунд А так же русского и английского |
|||
|
||||
| Pitbul |
|
|||
![]() Fruzenshtein ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 30.4.2008 Где: Киев Репутация: нет Всего: нет |
enoff
т.е. Вы предлагаете использовать charset=cp1251 и в таком случае перед регуляркой даже не надо будет прописывать ЛОКАЛЬ? Добавлено через 3 минуты и 5 секунд Сделал проверку для charset=cp1251 Все работает в норме даже, когда я не прописываю ЛОКАЛЬ. Но только стоит использовать украинскую букву i как тут же ее относит к запрещенным символам --------------------
### JAVA ###### programming ### |
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
Pitbul, не знаю, что посоветовать...
разве что перейти на utf8. |
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Перейти на юникод?
|
|||
|
||||
| Pitbul |
|
|||
![]() Fruzenshtein ![]() Профиль Группа: Участник Сообщений: 231 Регистрация: 30.4.2008 Где: Киев Репутация: нет Всего: нет |
enoff
Переход на UTF-8 не убрал проблемы, но пока использую именно cp1251 т.к. она не требует прописывания ЛОКАЛИ, как в случае с windows-1251 А вот вопрос с Украинским языком остается открытым, ведь на будущее надо знать, как с ним работать --------------------
### JAVA ###### programming ### |
|||
|
||||
| enoff |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 297 Регистрация: 30.6.2010 Где: Санкт-Петербург Репутация: 11 Всего: 13 |
gta4kv, использовать utf8 вместо windows-1251, так лучше?
Pitbul, cp1251==windows-1251 Это сообщение отредактировал(а) enoff - 24.9.2010, 21:23 |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |