使用javascript正则表达式获取div内容不起作用

时间:2015-08-18 19:01:20

标签: javascript html regex

我从ajax调用得到了一些html代码作为响应。我想获得特定div的内容。这是html:

<html>
     .
     .
   <div id="div-test">
          .
          .
   </div><!--/div-test-->
     .
     .
</html>

注意:我使用<!--/div-test>,因为div#div-test包含更多div。

这是我的正则表达式:

/<div[^.]*id=\"div\-test\"[^.]*>(.*?)<\/div><\!\-\-\/div\-test\-\->/

但它根本不起作用。当我尝试匹配它时,我得到的只是null值。那么,我的正则表达式是错的还是还有什么我需要做的?

2 个答案:

答案 0 :(得分:1)

如果您正在寻找非正则表达式方法,并且您不想直接在页面上附加内容,则可以创建文档片段并在那里搜索:

var content = ""; // HTML FROM AJAX

var div = document.createElement('div');
div.innerHTML = content;
ajax_element = div.firstChild;
var test_content = ajax_element.getElementById('div-test').innerHTML;

作为一种正则表达式的方法,尽管我可以提供反对意见,但这可能符合您的需求:

var search_id = "div-test";
var r = new RegExp("<div[^>]*?id=[^\"]*?[^']*?"+search_id+"[^\"]*?[^']*?[^>]*?((?s).*)<\/div><!--\/"+search_id+"-->");

答案 1 :(得分:-1)

您可以使用正则表达式:

<div[^>]*?id='div-test'[^>]*?>(.*?)<\/div><!--\/div-test-->

输出

enter image description here

或者,如果makup与""一起使用,则可以使用

<div[^>]*?id=\"div-test\"[^>]*?>(.*?)<\/div><!--\/div-test-->

enter image description here