如何使用regExp获取html内容?

时间:2018-07-02 10:15:32

标签: javascript regex

var str = '<h2 id="test1">11</h2><h2 id="test2">22</h2>'
var arr1 = ["test1","test2"]
var arr2 = ["11","22"]

如何从str中获得arr1 / arr2?

3 个答案:

答案 0 :(得分:1)

在现实生活中,您感兴趣的元素可能与其他元素交错 元素,例如id个属性。 因此,获取id="之后到下一个"之后的文本的正则表达式可能不是 足够。

当您要检索的文本内容时,情况甚至更糟 元素,尤其是如果它包含自己的子元素。

因此,对于HTML而言,使用起来通常更容易,更自然 DOM方法和属性,而不是正则表达式。

您可以例如创建DOM元素设置其内部HTML (从您的字符串开始)。

然后,您可以检索其子元素,例如按标签名称进行处理 循环。

然后(在循环中),拥有每个当前元素,您可以获取其任何一个 属性内部文本,并将其推入各自的数组(之前创建)中。

因此,示例Javascript片段展示了使用的方法,如下所示:

<script>
var str = '<h2 id="test1">11</h2><h2 id="test2">22</h2>';
var el = document.createElement('div');
el.innerHTML = str;
var elems = el.getElementsByTagName('h2');
var arr1 = [], arr2 = [];
for (var i = 0; i < elems.length; i++) {
  var currElem = elems[i];
  arr1.push(currElem.getAttribute("id"));
  arr2.push(currElem.innerText);
}
document.write('arr1: ' + arr1);
document.write('<br/>');
document.write('arr2: ' + arr2);
</script>

当然,您的最终目标不是将数组写入文档,而是 其中有您打算的用途,所以我写document.write只是出于演示目的。

答案 1 :(得分:0)

使用以下正则表达式获取ID

var str = '<h2 id="123"></h2><h2 id="123"></h2>'; 
var res = str.match(/(id="(.*?)(\"))/g);

答案 2 :(得分:0)

您可以使用此代码,它将返回您想要的确切信息。

<script type="text/javascript">

    var str1 = '<h2 id="test1">11</h2><h2 id="test2">22</h2>';
    var str2 = '<h2 id="test1">11</h2><h2 id="test2">22</h2>';
    var pattern_id = /id=\"([a-zA-Z0-9-]+)\"/;
    var pattern_value = /\>(\d+)\</;
    var id_array = [];
    var value_array = [];

    do {
         var array = str1.match(pattern_id);
         if(array != null)
         {
            id_array.push(array[1]);
            str1 = str1.replace(pattern_id, '');
         }
    }while(array != null);

    do {
         var array = str2.match(pattern_value);
         if(array != null)
         {
            value_array.push(array[1]);
            str2 = str2.replace(pattern_value, '');
         }
    }while(array != null);

    console.log(id_array); // id are stored here ex: test1, test2
    console.log(value_array); // value are stored here, 11, 22

</script>