![]() |
[javascript] помогите дописать скрипт с регулярными выражениями
Ниже вы можете видеть скрипт для браузера, который по нажатию Shift+Enter преобразует строку в форме ввода (в форме быстрого ответа для отправки текста)
из 04b2539eecc816ecb9af7adb9ce60493:пароль в Код:
04b2539eecc816ecb9af7adb9ce60493:парольЧто нужно 1) чтоб он корректно воспринимал DES и mysql3 хеши 2) тоже самое для freebsd md5 3) корректная работа с записями хеш:пароль логин:хеш:пароль хеш:соль:пароль логин:хеш:соль:пароль От чего можно отталкиваться Mysql - 16 символов Как и md5 состоит из символов abcdef0987654321 DES - 13 символов freebsd md5 - 32 символа (пример $1$12345678$tDiEmRj8eI0HYEz5Z9P3L/) Начинается с $1, между $ идет соль до 8 символов (выделил синим цветом), далее 22 символа ЗЫ для сальтовых мд5 соль обычно 3 или 5 символов, но пока и без этих заморочек стабильно работает Сам не шарю, на многое не способен Код:
// Ctrl+Enter RedHash Submits |
делаю ап. Кто следелает хотя бы корректное распознавание хеша по длине в
13, 16, 31-32, 40 тому +20 |
добавить имхо в replacements = [
Код:
[/(\w{16}\:)([^\s\r\:]+$)/mig, '$1$2'],для DES туда надо вписывать спец. символы (слеши, точки и тд) Пока не проверить, надо скачивать гризмонкей и тд Точно так же делаются: Цитата:
|
когда я в тупую делал реплейсы
16, 32, 13 и в тексте были разные хеши, то для хешей в 32 делалась тройная окраска, что не есть гут |
кстати а нафига там
Код:
[/(\w{31,32}\:)([^\s\r]+\:)([^\s\r]+)/mig, '$1$2$3'],Типа соль? :) P.S. ок, сейчас посмотрю поставлю |
Цитата:
|
Танатоз хочу уточнить что будет входнымы данными для скрипта. Т.е. какого вида будет переменная (text) в function redhash(text). Это будет текст вида
Цитата:
Читая пост я понял что основное это Цитата:
Цитата:
|
нужен яваскрипт, чтоб на стороне клиента делать действия
ЗЫ если грубо взять, то надо выделять текст именно после последнего двоеточия, тут правильно заметил |
Танатоз есть такая штука
Код:
Исходный текст<br>Если подходит можно адаптировать под твой скрипт. Но есть проблемка я не могу запустить исходный (твой) скрипт. |
Если вдруг кто-то не понял автор темы просит изменить\написать userjs (Opera и Мозилла (работает при установке плагина) смотри operafan.net)
|
наскоко я понял надо просто выделить текст другим цветом
предлогаю формировать в контейнер Цитата:
Цитата:
И это не требует такого огромного количества жаваскрипт кода Чтото я не понимаю всей этой завязаной канители наверное я гений........ или наоборот :) |
автору нужны bb теги
[color=цвет]текст[/color] Я еще раз повторяю нужен скрипт не для страницы а для userjs (operafan.net) Вообщем все сказал=\Больше повторять не буду,пусть автор подредактирует 1сообщение в теме чтобы не было непоняток |
исправил первый пост, читайте внимательно. Если не можете справиться с Грисманки, пробуйте с оперой, там проще
|
Подскажите КАК запускать этот скрипт и/или как пользоваться. Перепробовал все варианты.... установил оперу нужной версии, выполнил настройки которые описаны в скрипте. Не получилось! Поставил файрфокс нужный, установил грисманки, вроде как добавил новый скрипт, тоже нифига не работает.
Хочу разобраться чтобы добить задачку (с регулярками работал в ПХП, а вот тут не приходилось и решение как бы есть но...). Для пробы скачал с operafan.net один из userjs скриптов (первый самый - наклейки) подключил - заработало. Ну а ЭТОТ хоть ты тресни никак не могу заставить работать. Кто нибудь попробуйте у себя. Может я не так проверяю. Я создаю хтмл файлик с формой для ввода текста, пишу там что-то типа a9bceb0ac1654b9b0ec2fd8b23f859db:vasya , а дальше сколько не нажимаю Ctrl+Enter Shift+Enter пароль так и не засветился :( А что касается задания, так тут мне кажеться немного не правильно задаеться поиск пароля в регулярном выражении. Ведь какая нам разница какого вида хеши мы забили в форму, так же нам все равно напишем мы хеш:пароль или хеш:соль:пароль, нам не нужно делить эти строки (для одной одна регулярка для другой другая), тут ведь четко нужно засветить последнее после двоеточия. Так не все ли равно что было ДО этого двоеточия. Подобную регулярку (она намного проще) я описал в предыдущем посте. |
1) чтоб скрипт работал, в самом начале надо указать область действия - урл ачата или локалхост
2) не забыть в опере тот диалог с выбором папки где скрипты з) попробовать поставить курсор перед хешем, либо через несколько строк после хеша. 4) пробуйте тока шифтентер. 5) длина хеша важна, чтоб скрипт обычный текст не трогал |
создаем скрипт test.js текстом
alert();для проверки работает ли вообще хоть какой-нибдуь скрипт,при ошибке в коде скрипт может вообще не работать в приницпе см консоль ошибок Дальше идем в настройки оперы tools-preferences-advances-content-javascriptoptions-user javascript files или изменяем\смотрим настройки для опредленного сайта @include @exlude для https разрешение)нужно необязательны в начале скрипта(для всех сайтов папка со скриптами одинаковая, то лучше использовать) для мозиллы качаете плагин,дальше сами) *** видео только по просьбе(лс) |
Ну и задачку ты подкинул, Танатоз, неделю возился, но зато узнал что такое пользовательские яваскрипты (userJS) и повторил регулярные выражения.
Есть кое-какие результаты, но сначала анализ скрипта из условия. Я пытался подключить этот скрипт у себя - увы и ах скрипт не заработал. Вот тут для меня случился резкий налом, или я не умею подключать такие скрипты или в скрипте ошибка. После долгих раскопок и чтения я таки нашел ошибку в скрипте. Вот она: Код:
replacements = [Дальше я не сумел перехватывать нажатия клавиш, поэтому занялся основной функцией скрипта (redhesh) эмулируя нажатия шифт энтер просто повесив вызов функции на событие onClick в своей ХТМЛ страничке. Для чистоты экспериментов саму функцию хранил в отдельном js файле и настроил на него OPERA 9.22. Поехали дальше, анализ регулярных выражений показал что они не будут корректно работать даже с теми хешами которые вроде бы скрипт должен обрабатывать. Я нашел два случая неправильной работы выражений: 1) Для первой регулярки возьмем такие данные: хеш:логин:пароль т.е. 32(31) это хеш, дальше через : логин и через : пароль. aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:red:red – тут регулярка сработает (32 буквы а, ну и все остальное подходит под регулярку) НО если взять вот такое, то: bbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:red:red – регулярка ТОЖЕ сработает, так найдет строку в которой есть 32 буквы а и все остальное по регулярке!!! Почему так, да потому что в регулярке ничего не сказано про то с чего будет начинаться искомое выражение. Т.е. у нас во втором случае идет 4 буквы b дальше все четко по регулярке – 31(32) символа:логин:пароль поэтому регулярка срабатывает и красит что-то левое (а я понял ты в каком-то из постов сказал что нужно четко отличать хеш от нехеша чтобы не красило левак) Та же штука со второй регуляркой но тут есть еще одна ошибочка. 2) В конце выражения стоит значек $ который обозначает конец строки. Т.е. регулярка сработает если наше выражение будет стоять в конце строки, а это согласитесь нас не устраивает, а что если таких записей больше или мы что-то дописали в конец. Там не достаточно одного этого знака для правильной работы. Какие из этого всего выводы. 1) Цитата Танатоз: Цитата:
Решение: Код:
/(^|\s)(\w{31,32}\:)([^\s\r]+\:)([^\s\r]+)/mig2) Заканчивать регулярку нужно вот так: ($|\s) т.е. или конец строки или пробел. Причем в самой длинной регулярке там где хеш:логин:пароль этот финал можно опустить. А вот в более коротких нельзя т.к. будет окрашено ненужное. Результат: Функция redhash этого скрипта должна выглядеть вот так: Код:
function redhash(text) {Код:
replacements = [Для работы теги <b> нужно заменит на необходимые для расцветки. Если это еще актуально можно улучшить регулярки и полностью доделать задание. Тут например все таки не видно хеш мы нашли или просто какие-то символы заданного количества. Т.е. регулярка не ищет ХЕШ. Ну и конечно нужно тестировать выражения, в том плане что искомые строки могут находиться в разных кусках текста и после разных символов (перевод строки или знак пунктуации например). Опять же можно доделать если актуально остальную часть задания в плане поддержки различных видов записей. Все. Опять же простите за длину но хотелось поделится впечатлениями от решения задачки. Танатоз СПАСИБО! Супер не скучал неделю. З.Ы. Потестите кто-нибудь регулярки… может нужно что поменять. |
| Время: 18:09 |