var str = '<h2 id="test1">11</h2><h2 id="test2">22</h2>'
var arr1 = ["test1","test2"]
var arr2 = ["11","22"]
如何从str中获得arr1 / arr2?
答案 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>