Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.11.2008, 07:39
Кандидат Javascript-наук
Отправить личное сообщение для Бобр Посмотреть профиль Найти все сообщения от Бобр
 
Регистрация: 03.11.2008
Сообщений: 116

Регулярные выражения для превью форума
Регулярные выражения для превью форума

То есть, чтобы превью была на Javascript'ах.

Человек вводить свой текст в < textarea > Бла бля бля < /textarea >, используя метатегия [ b ], [ /b ], [ i ], [ /i ], [ u ], [ /u ], [ quote='Имя авторая сообщения' ], [ /quote ], нажимает на кнопку превью, и ему отображается его текст, но уже в котором метатеги преобразованы в нормальные теги. То есть [ b ] в < /b > и так далее.

Но для такого преобразования нужны регулярные выражения. Можно их примеров? Потому, что наверняка уже полно готовых, и не хочется изобретать велосипед.
Ответить с цитированием
  #2 (permalink)  
Старый 03.11.2008, 08:07
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

написание такого регулярного выражения, в простейшем случае не есть "изобретать велосипед", а всего лишь легонькая тренировочка для тех, кто только начал изучать регулярные выражения.
на ПХП, я бы написал в две секунды, а вот в JS c регулярками я редко сталкиваюсь, поэтому не помню названий методов объекта.
прочитайте мануал по регуляркам
избретать велосипед, я вас не заставляю, но вот крутить за вас педали, уж извините, не буду.
ЗЫ поосторожней только с такими преобразованиям)))
бо мой воспаленный мозг уже видит несколько возможных путей XSS, при плохо сделанной автозамене, в зависимости от остального движка))))
Ответить с цитированием
  #3 (permalink)  
Старый 04.11.2008, 06:25
Кандидат Javascript-наук
Отправить личное сообщение для Бобр Посмотреть профиль Найти все сообщения от Бобр
 
Регистрация: 03.11.2008
Сообщений: 116

Сообщение от Gvozd Посмотреть сообщение
написание такого регулярного выражения, в простейшем случае не есть "изобретать велосипед", а всего лишь легонькая тренировочка для тех, кто только начал изучать регулярные выражения.
на ПХП, я бы написал в две секунды, а вот в JS c регулярками я редко сталкиваюсь, поэтому не помню названий методов объекта.
прочитайте мануал по регуляркам
Я думал, что на сайте с таким названием сидят профессионалы в Javascript, которым написать два полезных многим выражения не составит труда. А не те, кто на все вопросы раздают бесполезные советы в стиле "погугли".

Поэтому собственно и зарегистрировался.
Ответить с цитированием
  #4 (permalink)  
Старый 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>' - так и не нашёл.
Ответить с цитированием
  #5 (permalink)  
Старый 04.11.2008, 08:44
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Бобр
s1 = s1.replace(/\[b\]/g, "<b>");
s1 = s1.replace(/\[\/b\]/g, '</b>');
А зачем тут вообще регулярные выражения?

Сообщение от Бобр
на этот бесполезный форум
Пожалуй, не буду ломать ваши убеждения.
Ответить с цитированием
  #6 (permalink)  
Старый 04.11.2008, 13:16
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Бобр
бесполезные советы в стиле "погугли".
ну, во первых я вам такого совета не давал.
я вам дал совет из класса RTFM, а это несколько другой класс советов.
вам реально стоит занятся изучением самых основ.
Ответить с цитированием
  #7 (permalink)  
Старый 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>"));

Но для вложенных друг в друга цитат придётся делать алгоритм с циклом, как я понимаю, я не решал такой задачи пока что.
Ответить с цитированием
  #8 (permalink)  
Старый 04.11.2008, 20:03
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

/\[quote=(\S+)\](.+)\[\/quote\]/gi

1. Имя не обязательно не должно содержать пробелов (хотя кому я говорю )
2. Если в строке будет несколько цитат, то начало цитаты возьмется от первой, а конец -- от последней (жадный квантификатор +)
Ответить с цитированием
  #9 (permalink)  
Старый 05.11.2008, 14:50
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Kolyaj,
Ну я привел скорее для примера "в какую сторону копать".
Ответить с цитированием
  #10 (permalink)  
Старый 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.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сделайте правила для форума scuter Сайт Javascript.ru 29 21.04.2009 17:28
Регулярные выражения вытаскивание по шаблону baal1988 Общие вопросы Javascript 27 09.10.2008 10:51
Регулярные выражения задача посложнее faunder Общие вопросы Javascript 5 15.09.2008 14:17
Регулярные выражения faunder Общие вопросы Javascript 2 15.09.2008 09:49
регулярные выражения в JS bifidokk Events/DOM/Window 2 02.06.2008 12:29