正则匹配html标签,包括非正规标签



<scr<script>ipt>alert("XSS")</scr<script>ipt>

<scr<sc<script>alert(1)</script>ript>ipt>alert("XSS")</scr<script>ipt>

<a href='vbscript:MsgBox("XSS")'
>link</a>

<
<a href='vbscript:MsgBox("XSS")'>link</a>
%c1;alert(/xss/);//
>

<script
   >alert(1)
</script
>

>hhgvv
<hhhh<hgg>
ghhvgh

以上标签使用正则如何匹配到标签?

>hhh

这种的是md语法不是标签不能被匹配。

有谁知道这正则怎么写?

成对的必须匹配到

是这样吗

var str = ` 
<scr<script>ipt>alert("XSS")</scr<script>ipt>
<scr<sc<script>alert(1)<\/script>ript>ipt>alert("XSS")</scr<script>ipt>
<a href='vbscript:MsgBox("XSS")'
>link</a>
<
<a href='vbscript:MsgBox("XSS")'>link</a>
%c1;alert(/xss/);//
>
<script
   >alert(1)
<\/script
>
>hhgvv
<hhhh<hgg>
ghhvgh
`;

str = str.replace(/<\/?\w+\b[^<>]*>/g,"【替换】");
console.log(str);

img

单纯用正则是无法匹配的。
因为你需要考虑到字符串内的html标签,注释内的标签。
要用程序将这些无效区间找出来,去掉这些噪音,再进行匹配