03.11.2008, 07:39
|
Кандидат Javascript-наук
|
|
Регистрация: 03.11.2008
Сообщений: 116
|
|
Регулярные выражения для превью форума
Регулярные выражения для превью форума
То есть, чтобы превью была на Javascript'ах.
Человек вводить свой текст в < textarea > Бла бля бля < /textarea >, используя метатегия [ b ], [ /b ], [ i ], [ /i ], [ u ], [ /u ], [ quote='Имя авторая сообщения' ], [ /quote ], нажимает на кнопку превью, и ему отображается его текст, но уже в котором метатеги преобразованы в нормальные теги. То есть [ b ] в < /b > и так далее.
Но для такого преобразования нужны регулярные выражения. Можно их примеров? Потому, что наверняка уже полно готовых, и не хочется изобретать велосипед.
|
|
03.11.2008, 08:07
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
написание такого регулярного выражения, в простейшем случае не есть "изобретать велосипед", а всего лишь легонькая тренировочка для тех, кто только начал изучать регулярные выражения.
на ПХП, я бы написал в две секунды, а вот в JS c регулярками я редко сталкиваюсь, поэтому не помню названий методов объекта.
прочитайте мануал по регуляркам
избретать велосипед, я вас не заставляю, но вот крутить за вас педали, уж извините, не буду.
ЗЫ поосторожней только с такими преобразованиям)))
бо мой воспаленный мозг уже видит несколько возможных путей XSS, при плохо сделанной автозамене, в зависимости от остального движка))))
|
|
04.11.2008, 06:25
|
Кандидат Javascript-наук
|
|
Регистрация: 03.11.2008
Сообщений: 116
|
|
Сообщение от Gvozd
|
написание такого регулярного выражения, в простейшем случае не есть "изобретать велосипед", а всего лишь легонькая тренировочка для тех, кто только начал изучать регулярные выражения.
на ПХП, я бы написал в две секунды, а вот в JS c регулярками я редко сталкиваюсь, поэтому не помню названий методов объекта.
прочитайте мануал по регуляркам
|
Я думал, что на сайте с таким названием сидят профессионалы в Javascript, которым написать два полезных многим выражения не составит труда. А не те, кто на все вопросы раздают бесполезные советы в стиле "погугли".
Поэтому собственно и зарегистрировался.
|
|
04.11.2008, 07:11
|
Кандидат Javascript-наук
|
|
Регистрация: 03.11.2008
Сообщений: 116
|
|
Если кто-то также как и я забрёл на этот бесполезный форум, то вот выражения для замены всех "[ 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>' - так и не нашёл.
|
|
04.11.2008, 08:44
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от Бобр
|
s1 = s1.replace(/\[b\]/g, "<b>");
s1 = s1.replace(/\[\/b\]/g, '</b>');
|
А зачем тут вообще регулярные выражения?
Сообщение от Бобр
|
на этот бесполезный форум
|
Пожалуй, не буду ломать ваши убеждения.
|
|
04.11.2008, 13:16
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
Сообщение от Бобр
|
бесполезные советы в стиле "погугли".
|
ну, во первых я вам такого совета не давал.
я вам дал совет из класса RTFM, а это несколько другой класс советов.
вам реально стоит занятся изучением самых основ.
|
|
04.11.2008, 16:10
|
|
|
Регистрация: 21.02.2008
Сообщений: 1,250
|
|
Бобр,
Почему вы думаете, что на каждую задачу существует готовое решение?
Вам посоветовали почитать материала на эту тему, потому что гораздо проще самому разобраться и решить задачу, чем ждать пока её кто-то решит за вас.
Сообщение от Бобр
|
Каким выражением преобразовать [ quote = 'Имя пользователя' ] во что-нибудь типа '< table Border=1>< tr>< td>< b>Имя пользователя< /b>'
|
Очень простое решение:
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>"));
Но для вложенных друг в друга цитат придётся делать алгоритм с циклом, как я понимаю, я не решал такой задачи пока что.
|
|
04.11.2008, 20:03
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
/\[quote=(\S+)\](.+)\[\/quote\]/gi
1. Имя не обязательно не должно содержать пробелов (хотя кому я говорю )
2. Если в строке будет несколько цитат, то начало цитаты возьмется от первой, а конец -- от последней (жадный квантификатор +)
|
|
05.11.2008, 14:50
|
|
|
Регистрация: 21.02.2008
Сообщений: 1,250
|
|
Kolyaj,
Ну я привел скорее для примера "в какую сторону копать".
|
|
06.11.2008, 09:12
|
Кандидат Javascript-наук
|
|
Регистрация: 03.11.2008
Сообщений: 116
|
|
Сообщение от 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>');
Последний раз редактировалось Бобр, 06.11.2008 в 09:17.
|
|
|
|