为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript:如何从字符串中获取所有 HTML 标签

Javascript:如何从字符串中获取所有 HTML 标签

慕沐林林 2023-11-02 10:09:45
我有一个包含 html 标签和纯文本的字符串例如它可能是:<h1>Hello World</h1><p>Welcome to Javascript</p>我想提取html标签(仅没有类名或属性的标签)到数组或列表,例如:tags = ['<h1>', '</h1>', '<p>', </p>']如何使用 JavaScript 实现这一点?请注意,这应该在服务器上运行,因此我无法访问 DOM 等。
查看完整描述

3 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

const regex = /<\/?[\w\d]+>/gi;

这应该得到带有开始和结束标签的标签,现在让我们看看它的工作原理:

<只是起始尖括号

\/是匹配文字反斜杠(如结束标签)

?使反斜杠“可选”

[\w\d]用于匹配字母数字字符

+匹配更多字母数字字符

>对于另一个尖括号

标志:

g匹配所有匹配项(呵呵)

i不区分大小写(因为 HTML 不区分大小写)


查看完整回答
反对 回复 2023-11-02
?
杨魅力

TA贡献1811条经验 获得超6个赞

您无法可靠地(或者可能根本无法)使用正则表达式解析任意 HTML。

如果您在服务器上运行 JavaScript,那么您可能正在运行 Node.js。如果是这样,请为自己获取一个 HTML 解析器库,并使用它将 HTML 解析为 DOM 的表示形式。然后您可以可靠地从中提取所有标签。

有许多可用的库可能适合。您可以尝试node-html-parser *,或在 Google 中搜索nodeJS HTML parser其他选项

*(无隶属关系,不做推荐或其他)


查看完整回答
反对 回复 2023-11-02
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

您需要将match() 与全局标志一起使用

tags = html.match(/<[^>]*?>/g)

正如评论中所指出的,如果 HTML 标记内有一个大于号 (>),而该标记仍然是有效的 HTML,则此答案将不起作用。


查看完整回答
反对 回复 2023-11-02
  • 3 回答
  • 0 关注
  • 170 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信