替换网页中的部分内容(正则表达式)
请问,将网页中的内容取出,然后做替换,但不替换a、script、img之中的数据,例如:
<a href="#">前部分关键词后部分</a>
<p><a href="#">前部分关键词后部分</a></p>
<div><p><a href="#">前部分关键词后部分</a></p></div>
<span><div><p><a href="#">前部分关键词后部分</a></p></div></span>
<span><span><div><p><a href="#">前部分关键词后部分</a></p></div></span></span>
<span><span><span><div><p><a href="#">前部分关键词后部分</a></p></div></span></span></span>
<span><span><span><span><div><p><a href="#">前部分关键词后部分</a></p></div></span></span></span></span>
<a href="#"><span><span><span><span><div><p>前部分关键词后部分</p></div></span></span></span></span></a>
这样,上面的条件都应该不匹配。也就是说,无论a、script、img嵌套在哪层中,它们中间包含的数据都不替换,我写的正则如下:
new RegExp("<([^a]\\S*)([^a]+)>(.*?)"+keyword+"(.*?)<\/\\1>|<(li)>(.*?)"+keyword+"(.*?)(<|\r\n)","i");
content = content.replace(re, "<$1$2$5>$3$6<b>"+keyword+"</b>$4$7<\/$1$5>$8");
但这样有错误(第三组数据中的关键词被替换了)。请问表达式应该如何写?