不明白。你要问什么。。不过这200分我看挺PL
^o^

解决方案 »

  1.   

    请把上下文应用环境讲清楚,描明白,根据回贴的经验,这种要HTML中提取数据的正则没有几十个回帖搞不清楚楼主的需求,很是麻烦,所以为你省事我也省事,把具体情况,所有可能列清楚.
      

  2.   

    我需要从一个树菜的页面,解析其html,获取其中的内容.然后保存到数据库中,实现2个系统的同步.
    我可以把树菜的html代码列出来,我需要获取每一个项目的
    havechildren=??
    isunit=??
    还有;<a href=''>其他(系统测试组)</a>中的内容  其他(系统测试组)例子:
    class=kid havechildren=1 isunit=0><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>其他(系统测试组)</a>通过正则获取:
    1
    0
    其他(系统测试组)
      

  3.   

    部分html<UL id=ulRoot style='Display:block' >
    <LI class=kid havechildren=1 isunit=0><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>其他(系统测试组)</a>
    <UL class=hdn>
    <LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>信息中心</a>
    <LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>测试部门</a>
    <LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>金朝阳测试部门</a>
    <LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>test2</a>
    <LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>test1_bureau</a>
    <LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>test2_bureau</a>
    <LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>部门1</a>
    <LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>部门2</a>
    </UL>
      

  4.   

    我已经通过js将代码分割
    arr=str.split("<LI ");
    然后循环,通过正则来提取需要的内容
      

  5.   

    忽忽。我温柔的去啦。。交给我们伟大的zhaoxiaoyang(梅雪香@深圳) 前辈啦。。
      

  6.   

    如果是这样,个人感觉用正则不如用DOM方式处理,因为HTML的情况比较复杂,正则不是很容易写的
    var lis = ulRoot.getElementsByTagName("LI"); //获得所有的LI
    lis[i].getAttribute("havechildren"); //
    lis[i].getAttribute("isunit"); //
    lis[i].getElementsByTagName("A")[0].nodeValue;
    以上就是你要的三个值,循环一下就好了
      

  7.   

    上面的html不是很规范
    我担心用dom会有问题以上的html代码是一个delphi应用生成的.
    格式都是确定的.变化不会很大.
      

  8.   

    想问下zhaoxiaoyang(梅雪香@深圳) 。过些天我想去买本JS的书。能推荐本不?
      

  9.   

    只要是在浏览器中正确解析了的代码,都可以用DOM处理to muxrwc 买书根据自己的实际情况买,其实我只看过半本书:javascript权威指南5th
      

  10.   

    方法一:
    havechildren            比如那个标签是DIV    object.getAttribute("havechildren");
    isunit                  同上
    其他(系统测试组)      同小梅的方法二
    正则:
    <script language="JavaScript" type="text/javascript">
    var str = "class=kid havechildren=1 isunit=0><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>其他(系统测试组)</a>";function getArrt(val)
    {
    var regstr = eval("/\\s" + val + "=(\\d{1})/i");
    var arr = str.match(regstr);
    if(arr.length)
    return arr[1];
    }
    alert(getArrt("havechildren"));//取字
    function getInnerText()
    {
    var regstr = /(<a.*>)(.*?)(<\/a>)/i;
    var arr = str.match(regstr);
    if(arr.length)
    return arr[2];
    }
    alert(getInnerText());
    </script>其实用DOM好些.
      

  11.   

    <script type="text/javascript">
    function lwc(a, b, c) {
    name.push(b);
    value.push(c);
    }
    function wc(a, b, c) {
    if (b)
    a.replace(lp, lwc);
    else {
    name.push("超级链接中的内容");
    value.push(c);
    }
    }
    var s = "<UL id=ulRoot style='Display:block' >"
    + "<LI class=kid havechildren=1 isunit=0><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>其他(系统测试组)</a>"
    + "<UL class=hdn>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>信息中心</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>测试部门</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>金朝阳测试部门</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>test2</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>test1_bureau</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>test2_bureau</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>部门1</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>部门2</a>"
    + "</UL>"
    var a = ["havechildren", "isunit"], name = [], value = [];
    var p = /<LI([^>]+)>|<a[^>]+>([\s\S]+?)<\/a>/gi;
    var lp = new RegExp("(" + a.join("|") + ")=(\\d+)", "gi");
    s.replace(p, wc);
    for (var i = 0; i < name.length; i ++)
    document.write(name[i] + " = " + value[i] + "<br \/>");
    </script>
      

  12.   

    感谢楼上各位的回答。现在先采用rotApple(烂苹果) 的方法二实现本人对正则不是很在行,能不能对rotApple(烂苹果) 的正则进行修改,
    期望是一个正则,把需要的信息一次性抠出来。
      

  13.   

    考虑到稍微严禁点。才用多次查找。完成那个。。
    不然完全可以不好这个。。a.replace(lp, lwc);
      

  14.   

    to:muxrwc(王辰) 
    你写得没怎么明白,不好意思.是不是把数据都装进了一个数组?
    我来研究下~谢谢你
      

  15.   

    把所有找到的数据都放进了value数组。。
    从哪找的放到了name数组。。
      

  16.   

    如果楼主的代码非常有规律,也可考虑用下面的方法
    <script type="text/javascript">
    var s = "<UL id=ulRoot style='Display:block' >"
    + "<LI class=kid havechildren=1 isunit=0><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>其他(系统测试组)</a>"
    + "<UL class=hdn>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>信息中心</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>测试部门</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>金朝阳测试部门</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>test2</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>test1_bureau</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>test2_bureau</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>部门1</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>部门2</a>"
    + "</UL>"
    re=/havechildren=(\d+?)\s+isunit=(\d+?)[\s\S]+?<a[\s\S]+?>([\s\S]+?)<\/a>/i
    alert(re.test(s))
    while(a=re.exec(s))
    {
    document.write("havechildren="+a[1]+"<br>"+"isunit="+a[2]+"<br>"+"超级链接中的内容="+a[3]+"<br>")
    s=s.replace(re,"");
    }
    </script>
      

  17.   

    <script language="JavaScript" type="text/javascript">
    var str = "class=kid havechildren=1 isunit=0><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>其他(系统测试组)</a>";var vKeys = new Array("havechildren", "isunit");
    function GetAllInfo()
    {
      var resultValue = new Array(3);
      var regstr = /\shavechildren=(\d{1}) isunit=(\d{1})><.*<a.*>(.*?)<\/a>/i;
      var arr = str.match(regstr);
      
      for (var i=0; i<arr.length; i++)
        resultValue[i] = arr[i+1];
        
      return resultValue;
    }
    </script>
    <input type="text" id="allResult" style="width:800">
    <input type="button" value="Get" onclick="allResult.value = GetAllInfo().toString()">我就偷懒了,借用一下,这样可以一次取出
      

  18.   

    //var vKeys = new Array("havechildren", "isunit");
    哦,这个就不需要了,既然固定的,写进去好了
      

  19.   

    for (var i=0; i<arr.length; i++)
    修改为for (var i=0; i<resultValue.length; i++)
      

  20.   

    .*havechildren\040*=\040*(?<havechildren>[\d]+).*isunit\040*=\040*(?<isunit>[\d]+).*>.*<a.*>(?<linktext>.+)</a>根据你给出的实例已经测试通过
      

  21.   

    正则...俺发现JS DOM强, 正则现在都不怎么用了.
      

  22.   

    DOM很占资源,多了的话效率也很成问题,少的情况是比正则要方便
      

  23.   

    str = "<LI class=kid havechildren=1 isunit=0><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>其他(系统测试组)</a>";
    re = /<LI[^>]+havechildren=(\d) isunit=(\d)[^>]*>.+?<a[^>]*>([^<]*)<\/a>/;
    alert(str.match(re));
      

  24.   

    完整测试
    <body>
    <div id="res"></div>
    <script type="text/javascript">
    var s = "<UL id=ulRoot style='Display:block' >"
    + "<LI class=kid havechildren=1 isunit=0><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>其他(系统测试组)</a>"
    + "<UL class=hdn>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>信息中心</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>测试部门</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>金朝阳测试部门</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>test2</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>test1_bureau</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>test2_bureau</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>部门1</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>部门2</a>"
    + "</UL>"
    re = /<LI[^>]+havechildren=(\d) isunit=(\d)[^>]*>.+?<a[^>]*>([^<]*)<\/a>/;
    while(m = re.exec(s))
    {
    document.getElementById("res").innerHTML += '<p>havechildren:'+m[1]+' isunit:'+m[2]+' 内容:'+m[3]+'</p>';
    s = s.substr(m[0].length);
    }
    </script>
    </body>
      

  25.   

    <body>
    <div id="res"></div>
    <script type="text/javascript">
    var s = "<UL id=ulRoot style='Display:block' >"
    + "<LI class=kid havechildren=1 isunit=0><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>其他(系统测试组)</a>"
    + "<UL class=hdn>"
    + "<LI class=kid havechildren=3 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>信息中心</a>"
    + "<LI class=kid havechildren=1 isunit=44><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>测试部门</a>"
    + "<LI class=kid havechildren=5 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>金朝阳测试部门</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>CSDN</a>"
    + "<LI class=kid havechildren=6 isunit=5><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''><b>Net_Lover</b></a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''></a>"
    + "<LI class=kid havechildren=9 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>部门1</a>"
    + "<LI class=kid havechildren=1 isunit=1><img class=clsNoHand src=/images/left.gif width=10 height=10>&nbsp;<a href=''>部门2</a>"
    + "</UL>"
    re = /<[^>]+havechildren=(\d) isunit=(\d)[^>]*>.+?<a[^>]*>(.*?)<\/a>/;
    while(m = re.exec(s))
    {
    document.getElementById("res").innerHTML += '<p>havechildren:'+m[1]+' isunit:'+m[2]+' 内容:'+m[3]+'</p>';
    s = s.substr(m[0].length);
    }
    </script>
    </body>