在Javascript中解析特定的HTML标记

时间:2011-10-23 21:36:37

标签: javascript parsing tags html-parsing

我正在寻找解析以下HTML的Javascript:

<p>random text random text random text random text</p>
<kbd><h2>Heading One</h2>Body text Body text Body text Body text</kbd>
<p>random text random text random text random text</p>

...并返回:

Heading One

换句话说,我想从<kbd>标签中删除所有标签和正文。

任何想法都将不胜感激!

3 个答案:

答案 0 :(得分:2)

var input = /* that HTML string here */;
var div = document.createElement('div');

div.innerHTML = input;

var h2 = div.getElementsByTagName('h2')[0];
var text = h2.innerText || h2.textContent;

alert(text); // alerts "Heading One"

参考:

演示:

答案 1 :(得分:2)

正则表达式?

var s = "<p>random text</p>\n" +
  "<kbd><h2>Heading One</h2>Body text</kbd>\n" +
  "<p>random text</p>";

s.match(/<h2>(.*?)<\/h2>/)[1] // == "Heading One"

这会将第一组与(.*?)之间的最短<h2>...</h2>字符串相匹配。

您可以使用g选项找到所有匹配项。

s.match(/<h2>(.*?)<\/h2>/g) // == ["<h2>Heading One</h2>"]

请注意,群组无法访问。

对于标签之间的多行内容,请使用

s.match(/<tag>[\s\S]*?<\/tag>/ig)

答案 2 :(得分:0)

如果你包含jquery(jquery.com),你可以这样做:

var heading=$("h2").html();