Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Нужна помощь с регулярными выражениями
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
Есть форма регистрации, и необходимо проверить на корректность логин. Логин может быть как на русском так и на английском, цифры и нижние подчеркивание(_). Но нижние подчеркивание должно разделять 2 слова, то есть подчеркивание не должно быть 1 символов и последним.
----- Так было, так есть и так будет
DeepVarvar
Отправлено: 17 Мая, 2012 - 13:19:07
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Не более одного подчеркивания: /^[a-zа-яёЁ]+?(_[a-zа-яёЁ]+){1,}$/iu
Одно и более: /^[a-zа-яёЁ]+?([_]+[a-zа-яёЁ]+){1,}$/iu (Добавление)
Добавил числа и тире: /^[a-zа-я0-9ёЁ\-]+?(_[a-zа-я0-9ёЁ\-]+){1,}$/iu /^[a-zа-я0-9ёЁ\-]+?([_]+[a-zа-я0-9ёЁ\-]+){1,}$/iu
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
DeepVarvar Спасибо большое, работает!
----- Так было, так есть и так будет
vanicon
Отправлено: 18 Мая, 2012 - 14:51:00
Частый посетитель
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
Работает, но чуть чуть не так. Нижние подчеркивание может разделять два слово, но его может и вовсе не быть. Если простой логин типа admin то его регулярка уже не пропускает так как нет нижнего подчеркивания...
----- Так было, так есть и так будет
DeepVarvar
Отправлено: 18 Мая, 2012 - 14:57:03
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Все там работает, я же проверял, там условие стоит "?" это значит что второй части вообще может не быть. Ну щас еще раз проверю. (Добавление)
Точна, фикс: /^[a-zа-я0-9ёЁ\-]+([_]+[a-zа-я0-9ёЁ\-]+)*$/iu (Добавление)
$res=ereg_replace("#(\[.*\])#Usi",$none,"Так, если в начале ХХ века ОП описывался как казуистика, то в настоящее время среди острых хирургических заболеваний органов брюшной полости он уступает только острому аппендициту и острому холециститу [1, 3, 4, 5, 16, 26];");
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.