Удалите все теги, кроме нужных, с помощью регулярного выражения JS - PullRequest
2 голосов
/ 01 марта 2012

Мне нужно удалить все теги, кроме списка разрешенных тегов из строки. Я должен использовать регулярные выражения в JavaScript.

Так что, если у меня в строке:

<html>
    <b>my text</b> is just <strong>an example</strong>
</html>

и мой список разрешенных тегов: b, strong

результат должен быть:

<b>my text</b> is just <strong>an example</strong>

Кажется, все просто, но регулярные выражения выводят меня из себя:)

Большое спасибо, дорогие друзья!

1 Ответ

3 голосов
/ 01 марта 2012

Я только что посмотрел это на phpjs.org: http://phpjs.org/functions/strip_tags:535

function strip_tags (input, allowed) {
    allowed = (((allowed || "") + "").toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join(''); // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c>)
    var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi,
        commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
    return input.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {
        return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
    });
}

НЕ мой код, но он будет делать, как вы просите - уберите теги с указанными вами исключениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...