Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Очистка текста от bbcode (https://javascript.ru/forum/misc/11777-ochistka-teksta-ot-bbcode.html)

Kedoff 13.09.2010 06:21

Очистка текста от bbcode
 
нужно полностью очистить текст от ббкода. через рекурсию сделать получается, но это слишком "мощно" при большом, тем более можно применить регулярные выражение, то есть удалить всё по выражению[*] (весь текст в квадратных скобках) .из-за того что используется квадратные скобки не могу написать регулярку.

Riim 13.09.2010 06:24

Экранирование в регулярках, как и в строках - "\".

Kedoff 13.09.2010 08:05

всё равно получается только скобки удалить

Kedoff 13.09.2010 08:57

на стековерфлоу нашёл такую же проблему
http://stackoverflow.com/questions/8...o-strip-bbcode

не решена

Kedoff 13.09.2010 09:04

var re = new RegExp('\\[.*?\\]', 'img');
text = '[b]asdasdasd[b] asdf яндекс'.replace(re, '')
alert(text)

Riim 13.09.2010 10:18

Т. е. содержимое между тегами тоже удалить надо?

Riim 13.09.2010 10:48

Если предположить, что символы "[]" могут быть только в bb-тегах, то можно так:
var str = '11111[tag]22222[tag]33333[/tag]44444[/tag]55555[url=http://google.com/]66666[/url]';
var re = /\[\w+[^\]]*\][^\[]*\[\/\w+[^\]]*\]/g;
while (str.length > (str = str.replace(re, '')).length);
alert(str);

рони 13.09.2010 12:10

Riim,
1111155555 вот что выдаёт алерт - если нужно удалить только bb-теги на выходе должно быть 111112222233333444445555566666
Можно попробовать так:
var str = '11111[tag]22222[tag]33333[/tag]44444[/tag]55555[url=http://google.com/]66666[/url]';
var re = /\[(\w+).*?\](.*)\[\/\1\]/gim;
while (str.length > (str = str.replace(re, '$2')).length);
alert(str);

Riim 13.09.2010 13:10

Цитата:

Сообщение от рони
если нужно удалить только bb-теги

если бы нужно было удалить только bb-теги, то и проблемы бы никакой не было:
var str = '11111[tag]22222[tag]33333[/tag]44444[/tag]55555[url=http://google.com/]66666[/url]';
alert(str.replace(/\[[^\]]+\]/g, ''));

Kedoff 13.09.2010 13:51

только тэги нужно было удалить


Часовой пояс GMT +3, время: 13:32.