Появился вопрос: возможно ли в JavaScript сделать поиск совпадений регулярному выражению в строке таким образом, чтобы, например, поиск по регулярному выражению (bb-коды)
Code
/\[(.+?)\](.+?)\[\/\1\]/gm
в строке
Code
[b]bb-[i]codes[/i] rules[/b]
нашёл обе пары bb-кодов, а не только
Code
[b]...[/b]
? Единственная идея - но она не очень нравиться - пытаться содержимое во втором кармане опять тестировать на регулярное выражение.
Зачем .+ ? По-моему тут надо бы \w+, ведь название BB-коды обычно состоит только из пары латинских знаков и только. Ещё не мешало бы сделать независимость от регистра выражению.
Бармалей, точно! Спасибо за замечание! Хорошо, мы поместим первую часть - буквы в первый карман (там кириллицы нет всё равно), а остальное - можем не запоминать вовсе. Но всё же, как находить вложенность, точнее, вложенные теги?
Есть вопрос тоже, прочитал статью по рег. выражениям, вообще ниче не понял Вот допустим есть строка:
Code
1, 2, 3, 4, 5
Как эти цифры заменить на нужный текст, если, например, 1 - это текст1, 2 - текст2 и т.д. У меня пока получилось только заменить всю строку на текст1))
Добавлено (22 Март 2009, 10:54) --------------------------------------------- Бармалей, что это?)) Если ты хотел заменить цифры по порядку, то они могут быть и так - 4, 8, 2, 6.
Добавлено (22 Март 2009, 11:11) --------------------------------------------- }{0тт@бь)ч, всё, понял, теперь работает.
Из-за того, что некоторые "умники" научились смотреть исходный код, они видят hide'ы любого значения. Необходимо защитить код поста, я хочу это сделать с помощью функции escape().
Одним из фейлов была попытка escape'ить html-код и сохранять его в пост. Но после парсера юкоза и unescape'а, код портился.
Пробовал escape'ить только внутренности тега hide, но это сильно сложно: нужно отбрасывать лишние части, вытягивать содержимое тега, а потом ставить все на место.
В итоге решил escape'ить каждую букву по отдельности через регулярки и replace():
Code
message = '[b]текст[/b] что-то [color=red]еще[/color] [hide=300]что-то[/hide] [u]все[/u]'; var result=message.replace(/([а-я])/ig, escape("$1")) alert(result);
Но скрипт зашифровал не саму букву, а сочетание "$1" (а без кавычек выдает ошибку)