Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Регулярные выражения и нижнее подчеркивание
vegasmoscow  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 132
Пользователь №: 18451
На форуме: 15 лет, 10 месяцев, 28 дней
Карма:




Здравствуйте, форумчане!

Два дня бьюсь с формой авторизации. Проблема с регулярным выражением. Не до конца понимаю логику его действия. Приведу фрагмент кода:

$pattern_login = "/^[A-z0-9]+$/";

// Проверяем поле Логин
if (!preg_match ($pattern_login, $new_login)) { // Логин должен состоять только из англ. букв и цифр
$msg_new_login = 'Логин должен состоять только из английских букв и цифр';
}


Если логин Admin55_ , то ошибка не выводится. Почему шаблон "/^[A-z0-9]+$/" игнорирует нижнее подчеркивание? Я голову сломал уже!

Всем заранее спасибо.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Zzepish  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5978
Пользователь №: 32538
На форуме: 13 лет, 24 дня
Карма: 67




вместо плюса поставь {3,} это значит, что надо чтоб по твоему орбразцу от трех до бесконечности символов было
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Zzepish  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 5978
Пользователь №: 32538
На форуме: 13 лет, 24 дня
Карма: 67




я вообще так пишу '/[A-Z]{1}[0-9a-zA-Z_-<>]{2,14}/'ui
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
vegasmoscow  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 132
Пользователь №: 18451
На форуме: 15 лет, 10 месяцев, 28 дней
Карма:




Цитата
вместо плюса поставь {3,} это значит, что надо чтоб по твоему орбразцу от трех до бесконечности символов было

А что это меняет? Длина строки здесь не причем.

Цитата
я вообще так пишу '/[A-Z]{1}[0-9a-zA-Z_-<>]{2,14}/'ui


В данном выражении нижнее подчеркивание разрешено. Сейчас попробовал, сократил немного, получилось так:

"/^[A-z0-9]+$/" - игнорирует нижнее подчеркивание и ошибки нет
"/^[A-Za-z0-9]+$/" - при наличии нижнего подчеркивания выдает ошибку (что мне и нужно)

Получается, что интервалы [A-Za-z] и [A-z] не одно и то же? Вот из-за таких нелогичных нюансов столько времени потратил. И нигде в сети об этом не написано.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 12174
Пользователь №: 23195
На форуме: 14 лет, 10 месяцев, 26 дней
Карма: 441

Трезвый :
15 лет, 9 месяцев, 26 дней


vegasmoscow
Цитата
Если логин Admin55_ , то ошибка не выводится. Почему шаблон "/^[A-z0-9]+$/" игнорирует нижнее подчеркивание? Я голову сломал уже!

потому что _ попадает в интервал A-z (а также "[", "\", "]", "^" и "`"). Все они расположены в интервале 65-122 ascii-кодов.
В твоем случае лучше воспользоваться /^[[:alnum:]]+$/ либо /^[a-z0-9]+$/i


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
vegasmoscow  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 132
Пользователь №: 18451
На форуме: 15 лет, 10 месяцев, 28 дней
Карма:




Цитата
потому что _ попадает в интервал A-z (а также "[", "\", "]", "^" и "`"). Все они расположены в интервале 65-122 ascii-кодов.
В твоем случае лучше воспользоваться /^[[:alnum:]]+$/ либо /^[a-z0-9]+$/i


Спасибо за разъяснения, у меня таких познаний нет.
Написал "/^[A-Za-z0-9]+$/", заглавные буквы тоже включил на всякий пожарный, протестировал, пока все без глюков.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса