求js正则

bb1210 2011-08-10 08:20:46
假设有html代码如下(在id为txt的textarea中,方便测试)


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<textarea id="txt">
<script type="text/javascript">
$(document).ready(function () {
$("#scrollDiv").Scroll({ line: 8, speed: 1, timer: 6000, left: "btn1", right: "btn2" });
jQuery.noConflict();
});
</script>
<iframe>xxxxxxxxxxxxx</iframe>
<style style="text/css">xxxxxxxxxxxxxxxxxx</style>
<select id="aa">dfdfdslfjlsfj;</select>
<a href='http://www.baidu.com'>百度</a>
<a href="http://news.sina.com.cn">新浪</a>
<img src="http://c.csdn.net/bbs/t/5/i/pic_logo.gif" alt="" class="logo" />
<img src="http://c.l.qq.com/lclick?oid=1233977&loc=QQ_HP_skyscraper" />
<img src="http://i3.sinaimg.cn/dy/FocusPic/124/2008-03-24/U1565P1T124D2F2633DT20110810145526.jpg" />
</textarea>

<script type="text/javascript">
var content = document.getElementById("txt").value;
content = content.replace(/<(script)[\S\s]*?\1>/gi, "");
content = content.replace(/<(style)[\S\s]*?\1>/gi, "");
content = content.replace(/<(iframe)[\S\s]*?\1>/gi, "");
content = content.replace(/<(select)[\S\s]*?\1>/gi, "");
//这里怎么写?
alert(content);
</script>
</body>
</html>


希望最后获得的结果如下

百度
<a href="http://news.sina.com.cn">新浪</a>
<img src="http://c.l.qq.com/lclick?oid=1233977&loc=QQ_HP_skyscraper" />
<img src="http://i3.sinaimg.cn/dy/FocusPic/124/2008-03-24/U1565P1T124D2F2633DT20110810145526.jpg" />


规则为
不包含sina的a链接只留文本,包含sina的a链接全部保留
不包含sina和qq的img标记一律删除,包含sina和qq的img标记全部保留
...全文
87 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
-过客- 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 q107770540 的回复:]
大婶又出来数星星了
[/Quote]

星星灭有你们滴牌牌闪。。。
q107770540 2011-08-10
  • 打赏
  • 举报
回复
大婶又出来数星星了
子夜__ 2011-08-10
  • 打赏
  • 举报
回复
各种V6 咔咔地
dalmeeme 2011-08-10
  • 打赏
  • 举报
回复
一种不用正则的方法,用dom操作:
    var textarea=document.getElementById("txt");
var tempDiv=document.createElement("div");
tempDiv.innerHTML=textarea.value;
var anchors=tempDiv.getElementsByTagName("a");
var imgs=tempDiv.getElementsByTagName("img");
for(var i=0;i<anchors.length;i++)
{
if(anchors[i].href.indexOf("sina")<0)
tempDiv.removeChild(anchors[i--]);
}
for(var i=0;i<imgs.length;i++)
{
if(imgs[i].getAttribute("src").indexOf("sina")<0&&imgs

[i].getAttribute("src").indexOf("qq")<0)
tempDiv.removeChild(imgs[i--]);
}
textarea.value=tempDiv.innerHTML;
alert(textarea.value);
-过客- 2011-08-10
  • 打赏
  • 举报
回复
替换的

<script type="text/javascript">
var content = document.getElementById("txt").value;
content = content.replace(/<(script)[\S\s]*?\1>/gi, "");
content = content.replace(/<(style)[\S\s]*?\1>/gi, "");
content = content.replace(/<(iframe)[\S\s]*?\1>/gi, "");
content = content.replace(/<(select)[\S\s]*?\1>/gi, "");
var reg = /<a(?:(?!sina)[^>])*>(.*?)<\/a>|<img(?:(?!qq|sina)[^>])*>/ig;
var result = content.replace(reg, "$1");
alert(result);
</script>
huangwenquan123 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lxcnn 的回复:]
try...


C# code
<script type="text/javascript">
var content = document.getElementById("txt").value;
var reg = /(<a[^>]*?sina[^>]*>.*?<\/a>|<img[^>]*?(?:qq|sina)[^>]*>)|<a(?:(?!sina)[^>]……
[/Quote]大婶v5
-过客- 2011-08-10
  • 打赏
  • 举报
回复
try...

<script type="text/javascript">
var content = document.getElementById("txt").value;
var reg = /(<a[^>]*?sina[^>]*>.*?<\/a>|<img[^>]*?(?:qq|sina)[^>]*>)|<a(?:(?!sina)[^>])*>(.*?)<\/a>/ig;
var result;
while ((result = reg.exec(content)) != null)
{
alert(result[1] == "" ? result[2] : result[1]);
}
</script>

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧