本帖最后由 nwleo 于 2010-04-22 00:20:34 编辑

解决方案 »

  1.   

    这个问题比较复杂,而且有歧义
    <li id="a">
    <li id="b">怎么闭合?<li id="a"></li>
    <li id="b"></li><li id="a"><li id="b"></li></li>如果li里不能包含li
    /<li\b[^>]*>[^<]*<li\b[^>]*>/i如果碰到其他标签结尾
    /<li\b[^>]*>[^<]*<\/ul\b[^>]*>/i
      

  2.   


    源头就是在ie6/7中,如果使用object.innerHTML获取一段符合xhtml标准的代码时,有些闭合标记就会缺失(如果object里面的对象全是用javascript动态创建的就没有这个问题,非常奇怪)。
      

  3.   


    不好意思,我漏说了,应该按照xhtml标准的嵌套规则来处理闭合标记,这样应该不会有歧义了。在我的这个例子里就是说<li>后面只能够是<ul></ul>(包含子列表)或者是</li>(没有子列表)
      

  4.   

    <ul><li id="a"><li id="b"><li id="c"><li id="d"></li></ul>
    如果是上面这段HTML代码,第一个正则表达式只能匹配到<li id="a"> <li id="b">和<li id="c"> <li id="d">,但匹配不了<li id="b"> <li id="c">。怎么修改呢?谢谢!