我有一个包含 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 不区分大小写)
杨魅力
TA贡献1811条经验 获得超6个赞
您无法可靠地(或者可能根本无法)使用正则表达式解析任意 HTML。
如果您在服务器上运行 JavaScript,那么您可能正在运行 Node.js。如果是这样,请为自己获取一个 HTML 解析器库,并使用它将 HTML 解析为 DOM 的表示形式。然后您可以可靠地从中提取所有标签。
有许多可用的库可能适合。您可以尝试node-html-parser *,或在 Google 中搜索nodeJS HTML parser
其他选项
*(无隶属关系,不做推荐或其他)
摇曳的蔷薇
TA贡献1793条经验 获得超6个赞
您需要将match() 与全局标志一起使用
tags = html.match(/<[^>]*?>/g)
正如评论中所指出的,如果 HTML 标记内有一个大于号 (>),而该标记仍然是有效的 HTML,则此答案将不起作用。
添加回答
举报
0/150
提交
取消