Регулярные выражения для превью форума
Регулярные выражения для превью форума
То есть, чтобы превью была на Javascript'ах. Человек вводить свой текст в < textarea > Бла бля бля < /textarea >, используя метатегия [ b ], [ /b ], [ i ], [ /i ], [ u ], [ /u ], [ quote='Имя авторая сообщения' ], [ /quote ], нажимает на кнопку превью, и ему отображается его текст, но уже в котором метатеги преобразованы в нормальные теги. То есть [ b ] в < /b > и так далее. Но для такого преобразования нужны регулярные выражения. Можно их примеров? Потому, что наверняка уже полно готовых, и не хочется изобретать велосипед. |
написание такого регулярного выражения, в простейшем случае не есть "изобретать велосипед", а всего лишь легонькая тренировочка для тех, кто только начал изучать регулярные выражения.
на ПХП, я бы написал в две секунды, а вот в JS c регулярками я редко сталкиваюсь, поэтому не помню названий методов объекта. прочитайте мануал по регуляркам избретать велосипед, я вас не заставляю, но вот крутить за вас педали, уж извините, не буду. ЗЫ поосторожней только с такими преобразованиям))) бо мой воспаленный мозг уже видит несколько возможных путей XSS, при плохо сделанной автозамене, в зависимости от остального движка)))) |
Цитата:
Поэтому собственно и зарегистрировался. |
Если кто-то также как и я забрёл на этот бесполезный форум, то вот выражения для замены всех "[ b ]" на < b > и "[ / b ]" на < / b >.
s1 = s1.replace(/\[b\]/g, "<b>"); s1 = s1.replace(/\[\/b\]/g, '</b>'); По аналогии разберётесь с "i" и "u". Каким выражением преобразовать [ quote = 'Имя пользователя' ] во что-нибудь типа '< table Border=1>< tr>< td>< b>Имя пользователя< /b>' - так и не нашёл. |
Цитата:
Цитата:
|
Цитата:
я вам дал совет из класса RTFM, а это несколько другой класс советов. вам реально стоит занятся изучением самых основ. |
Бобр,
Почему вы думаете, что на каждую задачу существует готовое решение? Вам посоветовали почитать материала на эту тему, потому что гораздо проще самому разобраться и решить задачу, чем ждать пока её кто-то решит за вас. Цитата:
var s = "[quote=Кто-то]Цитата[/quote]"; alert(s.replace(/\[quote=(\S+)\](.+)\[\/quote\]/gi, "<table Border=1><tr><td><b>$1</b></td></tr><tr><td>$2</td></tr></table>")); Но для вложенных друг в друга цитат придётся делать алгоритм с циклом, как я понимаю, я не решал такой задачи пока что. |
/\[quote=(\S+)\](.+)\[\/quote\]/gi 1. Имя не обязательно не должно содержать пробелов (хотя кому я говорю :) ) 2. Если в строке будет несколько цитат, то начало цитаты возьмется от первой, а конец -- от последней (жадный квантификатор +) |
Kolyaj,
Ну я привел скорее для примера "в какую сторону копать". |
Цитата:
Цитата:
Цитата:
// [quote="Имя автора"] -> <table><tr><td><b>Имя автора</b> s1 = s1.replace(/\[quote="([^"]+)"]/g, '<table Border=1 bordercolorlight=white CellPadding=8 CellSpacing=0><tr><td><b>$1</b><br>'); // [/quote] -> </td></tr></table> s1 = s1.replace(/\[\/quote\]/g, '</td></tr></table>'); |
Часовой пояс GMT +3, время: 12:24. |