解决方案 »

  1.   

    var td_array=[];
    str.replace(/<td>([\s\S]*?)(?=<\/td>)/ig,function(){
    td_array.push(arguments[1]);
    });//这个不对
    alert(td_array);
      

  2.   

    (?=<td>)是正向肯定预查,它是在预查结果的开始处再进行其它匹配查找,这显然不是你需要的
    这时虽然应该用(?<=<td>)反向肯定预查,但目前 javascript还不支持这个语法所以 只能换个方法
    var td_array = str.match(/<td>(.*)<\/td>/)[1].split(/<\/td><td>/);
      

  3.   

    楼主这是误导。
    其实就是获取td间的内容<td>(.*?)<\/td>
    <script type="text/javascript">
        var str='<td><a class="red" href="http://localhost:2013/ho/article/category/2" target="_blank">9</a></td>'
                +'<td><a onclick="edit(this)" href="javascript:void(0)" name="edit">888</a> | <a onclick="return category.del(this)" href="?del=2" name="del">777</a></td>'
        +'<td><a class="down" onclick="return false;" href="javascript:void(0);">999</a></td>';
        var arr = [];
        str.replace(/<td>(.*?)<\/td>/g,function(a,b){arr.push(b)});
        console.log(arr);
    </script>