如何删除除<sub>标记之外的所有HTML代码?

时间:2016-09-04 03:04:56

标签: javascript jquery html regex security

我需要删除除<:p>之外的所有HTML标记

  • <sub>标记
  • 后面有{1(或更多)换行符+4(或更多)空格}
  • 它被包围成“`”字符。

以下是一个例子:

var str = "something1
           <sub>
             something2
             <div class='myclass'>something3</div>
           </sub>
           <div class='myclass'>something4</div>
           something5

               <div class='myclass'>something6</div>
           <div class='myclass'>something7</div>
           `<div>something8</div>`
           something9";

预期输出:

/*   
something1
<sub>
  something2
  something3
</sub>
something4
something5

    <div class='myclass'>something6</div>
`<div>something8</div>`
something9

Here是我到目前为止所尝试过的:

/\n\s{0,3}<.*[^>]+|<sub>.*?<\/sub>|`.*?`/gm

1 个答案:

答案 0 :(得分:0)

这可以通过正则表达式替换。将此正则表达式与mg修饰符一起使用:

(\n\n    .*|`[^`]+`|<\/?sub\b[^>]+>)|<[^>]+>

并使用$1作为替代。

这有几个部分。捕获组找到您可能想要保留的所有HTML:

  • \n\n .*一个空行,另一行以4个空格开头。
  • `[^`]+` Back`Ticks中的内容。
  • <\/?sub\b[^>]+>)这符合sub HTML元素,无论是打开还是关闭。

其余的HTML元素将与<[^>]+>匹配,后者将被丢弃。