替换除 <strong>、</strong>、<b> 和 </b> 之外的所有 HTML 标签
Replace all HTML tags except for <strong>, </strong>, <b> and </b>
在 JavaScript 中,我使用此正则表达式从文本字符串中删除所有 HTML 标签:
t.replace(/<\/?[^>]+>/g, '');
现在我需要同样的东西,但它应该保留以下标签(它们不应该被替换):
<strong>
</strong>
<b>
</b>
你能帮帮我吗?我通常不使用正则表达式,所以如果这听起来太简单,请原谅。
只需使用否定的先行断言。
var s = '<strong> </strong>\n<b> </b> <h1> <h2> <a href="foo.com">';
alert(s.replace(/<(?!\/?b>|\/?strong>)[^>]+>/g, ''));
(?!\/?b>|\/?strong>)
开始时的否定前瞻断言匹配,即 <
后面不会跟着 /b>
或 b>
或 /strong>
或strong>
个字符串。
你也可以试试这个:
t.replace(/<(?!\/?(b|strong)(?=>|\s.*>))\/?.*?>/g, '')
我会通过 DOM:
来解决这个问题
var s = '<ol><li>hello </li><li><b>world</b></li></ol>';
var node = document.createElement('div');
node.innerHTML = s;
function clean(node, allowed, target)
{
for(var i = 0; i < node.childNodes.length; ++i)
{
var child = node.childNodes[i];
if (child.nodeType === 1) {
clean(child, allowed, target);
if (allowed.indexOf(child.nodeName) === -1) {
[].forEach.call(child.childNodes, function(item) {
target.appendChild(item);
});
node.removeChild(child);
--i;
}
}
}
}
clean(node, ['STRONG', 'B'], node);
console.log(node.innerHTML);
您还可以通过在 JavaScript 中实施 strip_tags()
来选择更脏的版本。
在 JavaScript 中,我使用此正则表达式从文本字符串中删除所有 HTML 标签:
t.replace(/<\/?[^>]+>/g, '');
现在我需要同样的东西,但它应该保留以下标签(它们不应该被替换):
<strong>
</strong>
<b>
</b>
你能帮帮我吗?我通常不使用正则表达式,所以如果这听起来太简单,请原谅。
只需使用否定的先行断言。
var s = '<strong> </strong>\n<b> </b> <h1> <h2> <a href="foo.com">';
alert(s.replace(/<(?!\/?b>|\/?strong>)[^>]+>/g, ''));
(?!\/?b>|\/?strong>)
开始时的否定前瞻断言匹配,即 <
后面不会跟着 /b>
或 b>
或 /strong>
或strong>
个字符串。
你也可以试试这个:
t.replace(/<(?!\/?(b|strong)(?=>|\s.*>))\/?.*?>/g, '')
我会通过 DOM:
来解决这个问题var s = '<ol><li>hello </li><li><b>world</b></li></ol>';
var node = document.createElement('div');
node.innerHTML = s;
function clean(node, allowed, target)
{
for(var i = 0; i < node.childNodes.length; ++i)
{
var child = node.childNodes[i];
if (child.nodeType === 1) {
clean(child, allowed, target);
if (allowed.indexOf(child.nodeName) === -1) {
[].forEach.call(child.childNodes, function(item) {
target.appendChild(item);
});
node.removeChild(child);
--i;
}
}
}
}
clean(node, ['STRONG', 'B'], node);
console.log(node.innerHTML);
您还可以通过在 JavaScript 中实施 strip_tags()
来选择更脏的版本。