|
Здравствуйте, гость ( Вход | Регистрация )
|
![]()
Сообщение
#21
|
|
![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 107 Регистрация: 23.11.2008 Из: Сергиев Посад Пользователь №: 1 178 Спасибо сказали: 9 раз ![]() |
В общем я маленько въехал, но это всё равно для меня очень сложно.
Я понял, что там где можно обойтись без этих скобок лучше их опускать. Но в моём случае они нужны, потому что захват не являеться постояным, а заключён в переменную. Так? Добавил скобки всё работает! ![]() Скрипт можно перести в готовые... ![]() Функции скрипта -- Запрет символов в никах -- Заперет ников состоящих только из цифр |
|
|
![]() |
![]()
Сообщение
#22
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Код if tUser.sNick:find(""..sbansymbol.."") then это очень дурная привычка так писать!!! Вы даже не представляете насколько это вредно. Нужно всеми способами избавляться от лишних конкатенаций, а тут наоборот делают. Почему не написать так: Код if tUser.sNick:find(sbansymbol) then зачем делать лишнюю конкатенацию? Эту привычку надо искоренять! Не пойму, кто вас научил делать эту лишнюю конкатенацию? Ведь никто из скриптописателей данного форума так не пишет.
|
|
|
![]()
Сообщение
#23
|
|
![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 107 Регистрация: 23.11.2008 Из: Сергиев Посад Пользователь №: 1 178 Спасибо сказали: 9 раз ![]() |
Простите я не знал
![]() Теперь знаю Спасибо ![]() |
|
|
![]()
Сообщение
#24
|
|
![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 107 Регистрация: 23.11.2008 Из: Сергиев Посад Пользователь №: 1 178 Спасибо сказали: 9 раз ![]() |
Кто-нибудь может подсказать, в чём прикол?
Следующий код запрещает ники состоящие только из цифр Код if tUser.sNick:find"^%d+$" then Core.SendToUser(tUser,"*** Ники состоящие только из цифр запрещены!") Core.Disconnect(tUser) end Логически рассуждая можно запретить ники состоящие например из символа - Следующим образом Код if tUser.sNick:find"^%-$" then Core.SendToUser(tUser,"*** Ники состоящие только из символов запрещены!") Core.Disconnect(tUser) end Символ - заэкранирован, и всё равно не работает Почему? |
|
|
![]()
Сообщение
#25
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Потому что такое регулярное выражение ловит только один символ -, то есть ник, состоящий только из одного этого символа.
Нужно чтобы ловился один и более, для этого нужно поставить плюсик: Код if tUser.sNick:find"^%-+$" then Ведь если бы мы в предыдущем примере не поставили плюсик: Код if tUser.sNick:find"^%d$" then то ловилась бы тоже одна цифра, а не любое число.
|
|
|
![]()
Сообщение
#26
|
|
![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 107 Регистрация: 23.11.2008 Из: Сергиев Посад Пользователь №: 1 178 Спасибо сказали: 9 раз ![]() |
Не могу удержаться и спросить ещё кое что
![]() Таким образом, что бы запретить ники состоящие только из - или . или z Ну вообщем не важно какие это будут символы Приходиться делать так: Раскрывающийся текст Код if tUser.sNick:find"^%-+$" then Core.SendToUser(tUser,"*** Ники состоящие только из символов запрещены!") Core.Disconnect(tUser) end if tUser.sNick:find"^z+$" then Core.SendToUser(tUser,"*** Ники состоящие только из одной и той же буквы запрещены!") Core.Disconnect(tUser) end Мне интересно узнать... Можно ли как то упростить код? Чтобы просто добавлять символы в Код tUser.sNick:find"^z+$"
|
|
|
![]()
Сообщение
#27
|
|
![]() Главный ра******й тут... ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз ![]() |
По-моему так:
Код tUser.sNick:find"^([%-z])%1*$"
|
|
|
![]()
Сообщение
#28
|
|
![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 107 Регистрация: 23.11.2008 Из: Сергиев Посад Пользователь №: 1 178 Спасибо сказали: 9 раз ![]() |
Нет не фурычит
|
|
|
![]()
Сообщение
#29
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Регулярные выражения в Lua не столь разнообразны, как регулярные выражения пёрла. Поэтому не всё возможно сделать
![]() |
|
|
![]()
Сообщение
#30
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Заблокированные Сообщений: 87 Регистрация: 16.10.2008 Пользователь №: 805 Спасибо сказали: 35 раз ![]() |
Код if tUser.sNick:match("^[%-]+$") or tUser.sNick:match("^[%.]+$") or tUser.sNick:match("^[z]+$") then
|
|
|
![]()
Сообщение
#31
|
|
![]() RusHub team lead ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз ![]() |
Тогда уж без квадратных скобок и с использованием find, а не match
Код local sNick = tUser.sNick
if sNick:find"^%-+$" or sNick:find"^%.+$" or sNick:find"^z+$" then |
|
|
![]() ![]() |
Похожие темы
![]() |
Сейчас: 17.2.2025, 8:48 |