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 07:21

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

Riim 13.09.2010 07:24

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

Kedoff 13.09.2010 09:05

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

Kedoff 13.09.2010 09:57

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

не решена

Kedoff 13.09.2010 10:04

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

Riim 13.09.2010 11:18

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

Riim 13.09.2010 11: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 13: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 14: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 14:51

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


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