vegasmoscow
10.06.2012 - 04:56
Здравствуйте, форумчане!
Два дня бьюсь с формой авторизации. Проблема с регулярным выражением. Не до конца понимаю логику его действия. Приведу фрагмент кода:
$pattern_login = "/^[A-z0-9]+$/";
if (!preg_match ($pattern_login, $new_login)) {
$msg_new_login = 'Логин должен состоять только из английских букв и цифр';
}
Если логин Admin55_ , то ошибка не выводится. Почему шаблон "/^[A-z0-9]+$/" игнорирует нижнее подчеркивание? Я голову сломал уже!
Всем заранее спасибо.
Zzepish
10.06.2012 - 05:14
вместо плюса поставь {3,} это значит, что надо чтоб по твоему орбразцу от трех до бесконечности символов было
Zzepish
10.06.2012 - 05:17
я вообще так пишу '/[A-Z]{1}[0-9a-zA-Z_-<>]{2,14}/'ui
vegasmoscow
10.06.2012 - 05:28
Цитата |
вместо плюса поставь {3,} это значит, что надо чтоб по твоему орбразцу от трех до бесконечности символов было
|
А что это меняет? Длина строки здесь не причем.
Цитата |
я вообще так пишу '/[A-Z]{1}[0-9a-zA-Z_-<>]{2,14}/'ui |
В данном выражении нижнее подчеркивание разрешено. Сейчас попробовал, сократил немного, получилось так:
"/^[A-z0-9]+$/" - игнорирует нижнее подчеркивание и ошибки нет
"/^[A-Za-z0-9]+$/" - при наличии нижнего подчеркивания выдает ошибку (что мне и нужно)
Получается, что интервалы [A-Za-z] и [A-z] не одно и то же? Вот из-за таких нелогичных нюансов столько времени потратил. И нигде в сети об этом не написано.
Invis1ble
10.06.2012 - 07:09
vegasmoscow
Цитата |
Если логин Admin55_ , то ошибка не выводится. Почему шаблон "/^[A-z0-9]+$/" игнорирует нижнее подчеркивание? Я голову сломал уже! |
потому что _ попадает в интервал A-z (а также "[", "\", "]", "^" и "`"). Все они расположены в интервале 65-122 ascii-кодов.
В твоем случае лучше воспользоваться /^[[:alnum:]]+$/ либо /^[a-z0-9]+$/i
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
vegasmoscow
10.06.2012 - 07:31
Цитата |
потому что _ попадает в интервал A-z (а также "[", "\", "]", "^" и "`"). Все они расположены в интервале 65-122 ascii-кодов. В твоем случае лучше воспользоваться /^[[:alnum:]]+$/ либо /^[a-z0-9]+$/i |
Спасибо за разъяснения, у меня таких познаний нет.
Написал "/^[A-Za-z0-9]+$/", заглавные буквы тоже включил на всякий пожарный, протестировал, пока все без глюков.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.