JS使用正则的小问题,请高人指点

szc21 2007-12-29 10:37:43
我接收到一html页面,想用js取出body里面的内容
function testss(obj)
{
//obj为html内容
var reg = /\<body\>.*\<\/body\>/i;
alert(obj.match(reg));
}

这种测试的时候 obj="ssssss<body>tttttttttt</body>iiii";是能取到数据,但传进来的复杂html后,显示为null。不知道obj为多行的时候应该怎么写?望指教!在线等结。
...全文
238 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaolei1982 2007-12-29
  • 打赏
  • 举报
回复
问gzdiablo:
\S\s不是应该包括回车的整个都匹配出来,用循环加alert(arr.join("\n"));是什么意思?
andnnl 2007-12-29
  • 打赏
  • 举报
回复
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script language="javascript">
function testss()
{
//obj为html内容
var obj=document.getElementById("t").value;
alert(obj)
var reg = /\<body\>(\s|.)*\<\/body\>/;
alert(obj.match(reg));
}
</script>

</head>

<body>
<label>
<textarea id="t" name="textarea" rows="5"></textarea>
</label>
<p>
<label>
<input type="submit" name="Submit" value="提交" onclick="testss();" />
</label>
</p>
</body>

</html>
szc21 2007-12-29
  • 打赏
  • 举报
回复
我不是菠萝
-----------------
果然不是菠萝,是“牛菠萝”;谢谢了
已解决,谢谢各位,结贴。
szc21 2007-12-29
  • 打赏
  • 举报
回复
传的完整版是 一页面的html编码,就是那种 <html>...<body></body></html>这种源码,我想用正则吧里面属于<body>里面的内容取出来,
function testss(obj)
{
//obj为html内容
alert(obj); //能看见代码,一切正常
var reg = /\<body\> .*\ <\/body\> /mig; //到这就为空了
alert(obj.match(reg));
}
自己用一行的obj="ssssss <body> tttttttttt </body> iiii";测试是能取到值的,我不知道怎么定义多行的值。
gzdiablo 2007-12-29
  • 打赏
  • 举报
回复
var str = (HTML字符串);
var re = /<body[^>]*>([\s\S]*?)</body>/ig;
var arr = [];
while(re.exec(str))
{
arr[arr.length] = RegExp.$1;
}
alert(arr.join("\n"));
mingxuan3000 2007-12-29
  • 打赏
  • 举报
回复
如果字符串是下面的内容
<body>
<!--头部-->
..................
...............
..........等等。
</div>
<!--结束-->
</body>

还用取么,不都是body么

还是下面的内容
123123123
<body>
<!--头部-->
..................
...............
..........等等。
</div>
<!--结束-->
</body>
aaaaaaaaaaaaaaaaaaaaa


只取body里面的?
mingxuan3000 2007-12-29
  • 打赏
  • 举报
回复
你传的是字符串?
szc21 2007-12-29
  • 打赏
  • 举报
回复
<body>
<!--头部-->
..................
...............
..........等等。
</div>
<!--结束-->
</body>
--------------------------------------
body就上面内容,

/<body>.*?<\/body>/mig;
也不行,郁闷
mingxuan3000 2007-12-29
  • 打赏
  • 举报
回复

<script type="text/javascript">

var reg = /<body>.*?<\/body>/mig;


</script>
mingxuan3000 2007-12-29
  • 打赏
  • 举报
回复

<script type="text/javascript">

var reg = /^<body>.*?<\/body>$/mi;

</script>
szc21 2007-12-29
  • 打赏
  • 举报
回复
function testss(obj)
{
//obj为html内容
var reg = /\ <body\> [.|\n]*\ <\/body\> /i;
alert(obj.match(reg));
}
------------------
谢谢
alert(null)
szc21 2007-12-29
  • 打赏
  • 举报
回复
先谢谢各位,传进来的是html,应该是文本吧,怎么用正则去匹配呢?其实我传进来的html是自己定的。就是<body>.*</body>,但不知道为什么取不到值。感觉是多行的问题。
xiaolei1982 2007-12-29
  • 打赏
  • 举报
回复
哦回的晚了,还是听mingxuan的吧
xiaolei1982 2007-12-29
  • 打赏
  • 举报
回复
function   testss(obj)
{
//obj为html内容
var reg = /\ <body\> [.|\n]*\ <\/body\> /i;
alert(obj.match(reg));
}

不行吗?
mingxuan3000 2007-12-29
  • 打赏
  • 举报
回复
正则的话要用//mig 这样,匹配换行的,而且 <body onload='testss()'>这种 也要考虑,就是不能简单的<body> .*\ <\body>
西安风影 2007-12-29
  • 打赏
  • 举报
回复
/\<body\>\s\S\*?<\/body\>/i;
mingxuan3000 2007-12-29
  • 打赏
  • 举报
回复
function testss()
{

var a=document.getElementsByTagName("body")[0].innerHTML.toString()
alert(a)
}
mingxuan3000 2007-12-29
  • 打赏
  • 举报
回复
function testss()
{

var a=document.getElementsByTagName("body")[0].innerHTML.toString()

}
</script>
[/code]
</head>
<body onload='testss()'>
xiaolei1982 2007-12-29
  • 打赏
  • 举报
回复
收到!thanks you,祝大家新年快乐
gzdiablo 2007-12-29
  • 打赏
  • 举报
回复
var str = (HTML字符串);
var re = /<body[^>]*>([\s\S]*?)</body>/ig;//表达式 [\s\S]*? 表示非贪婪匹配任何字符
var arr = [];//这里创建了一个数组 因为可能存在多个<body>标签的情况 标准情况下只有一个
while(re.exec(str))//遍历每个匹配
{
arr[arr.length] = RegExp.$1;//将匹配到的内容 加入数组
}
alert(arr.join("\n"));//多条匹配 使用换行符连接起来

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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