Javascript替换regex所有html标签,除了p,a和img

axr492tv  于 2023-06-07  发布在  Java
关注(0)|答案(3)|浏览(439)

我正在尝试删除所有的html标签,除了paimg标签。现在我有:

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
vkc1a9a2

vkc1a9a21#

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

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

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

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);
carvr3hs

carvr3hs2#

您可以使用下面的正则表达式 * 删除除 * 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

pgccezyw

pgccezyw3#

var input = 'b<p on>b <p>good p</p> a<a>a h1<h1>h1 p<pre>p p</p onl>p img<img src/>img';
var output = input.replace(/(<(?!\/?((a|img)(\s+[^>]+)*|p)\s*>)([^>]+)>)/ig, '');
console.log(output);
output: bb <p>good p</p> a<a>a h1h1 pp pp img<img src/>img

如果你想删除JS事件处理程序属性:

var input = 'b<p on>b <p>good p</p> a<a>a h1<h1>h1 p<pre>p p</p onl>p img<img src="y.gif" /> see <img src="x.png" onerror alt="cat" /> there';
var output = input.replace(/(<(?!\/?((a|img)(\s+((?!on)[^>])+)*|p)\s*>)([^>]+)>)/ig, '');
console.log(output);
output: bb <p>good p</p> a<a>a h1h1 pp pp img<img src="y.gif" /> see  there

相关问题