解析 Javascript 中的特定 HTML 标签

发布于 2024-12-11 15:28:39 字数 424 浏览 0 评论 0原文

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

<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

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

任何想法将不胜感激!

I'm looking for the Javascript to parse the following HTML:

<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>

... and return just:

Heading One

In other words, I'd like to strip all tags and Body Text from within the <kbd> tags.

Any ideas would be greatly appreciated!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

各自安好 2024-12-18 15:28:39
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"

参考:

演示:

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"

Reference:

Demo:

遇到 2024-12-18 15:28:39

正则表达式?

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"

这会将第一组匹配为

...

之间的最短可能的 (.*?) 字符串。

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

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

请注意,组不可访问。

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

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

Regex?

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"

This matches group one as the shortest possible (.*?) string between <h2>...</h2>.

You can find all matches using the g option.

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

Note that groups are not accessible.

For multiline content between tags, use

s.match(/<tag>[\s\S]*?<\/tag>/ig)
习惯成性 2024-12-18 15:28:39

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

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

if you include jquery (jquery.com) you can do this:

var heading=$("h2").html();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文