使用JS正则表达式删除除通缉标记之外的所有标记

时间:2012-03-01 15:40:58

标签: javascript html regex tags

我需要删除除字符串中允许的标记列表之外的所有标记。我必须在javascript中使用正则表达式。

所以,如果我有我的字符串:

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

我允许的标签列表是:b,强大

结果必须是:

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

似乎很简单,但正则表达式让我脱离了我:)

非常感谢亲爱的朋友们!

1 个答案:

答案 0 :(得分:3)

我刚看了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 : '';
    });
}

不是我的代码,但它会按照您的要求执行 - 使用您指定的例外条带标记。