Javascript替换正则表达式除了p,a和img之外的所有html标签

时间:2017-05-16 18:32:57

标签: javascript regex

我尝试删除除paimg标记之外的所有html标记。现在我有:

content.replace(/(<([^>]+)>)/ig,""); 

但这会删除所有HTML标记。

这是api的内容示例:

    <table id="content_LETTER.BLOCK9" border="0" width="100%" cellspacing="0" cellpadding="0" bgcolor="#F7EBF5">
<tbody><tr><td class="ArticlePadding" colspan="1" rowspan="1" align="left" valign="top"><div>what is the opposite of...[] rest of text

2 个答案:

答案 0 :(得分:4)

您可以匹配标记以保留在捕获组中,然后使用交替匹配所有其他标记。然后替换为$1

(<\/?(?:a|p|img)[^>]*>)|<[^>]+>

演示:https://regex101.com/r/Sm4Azv/2

JavaScript演示:

&#13;
&#13;
var input = 'b<body>b a<a>a h1<h1>h1 p<p>p p</p>p img<img />img';
var output = input.replace(/(<\/?(?:a|p|img)[^>]*>)|<[^>]+>/ig, '$1');
console.log(output);
&#13;
&#13;
&#13;

答案 1 :(得分:2)

您可以使用以下正则表达式删除除 apimg以外的所有HTML代码:

<\/?(?!a)(?!p)(?!img)\w*\b[^>]*>

替换为空字符串。

var text = '<tr><p><img src="url" /> some text <img another></img><div><a>blablabla</a></div></p></tr>';
var output = text.replace(/<\/?(?!a)(?!p)(?!img)\w*\b[^>]*>/ig, '');
console.log(output);

Regex 101 Demo