在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>字符串。

RegEx DEMO

10-07 13:58