gpt4 book ai didi

javascript - 如何使用正则表达式检查所有 html 标签是否已关闭

转载 作者:行者123 更新时间:2023-11-28 10:10:19 27 4
gpt4 key购买 nike

我的意思是每个<应该有一个适当的> 。没有任何 < 的字符串或>应该也是有效的。

有什么想法吗?

最佳答案

曾经,我创建了一个 JavaScript BB 代码解析器,它也处理不正确的闭合标签。同样的概念也适用于 HTML(以及任何其他依赖于树的标记语言)。

  1. 定义变量:var string = ""; var lastIndex = 0; var stack = []; var parsedString = ""///And some more
  2. 循环字符串,直到 <匹配,使用 string.indexOf("<", lastIndex) .
  3. 选择标签名称,然后搜索结束语 > (使用回复:/[^<]+?/)。设置lastIndex到这个 > 的索引,加 1。
  4. 将此值 (tagName) 添加到数组中(让我们定义此数组: var stack = []; )。
  5. 如果遇到结束标记,则从最后一个元素开始遍历堆栈并返回。
  6. 如果开始标签是 stack 的最后一个元素,使用stack.pop() 。继续1。
  7. 如果开始标记不是数组的最后一个元素:
    • 如果您的标签很重要,请坚持找到开始标签( </div> 应该关闭所有 <div> ,即使您必须丢弃 9001 <span> 声明)。
    • 在遍历数组时,检查遇到的标记的状态:这些元素是“重要”元素吗? (例如, <strong> 不如 <div> 重要)。
    • 如果您遇到重要标签(例如 <div> ),而您的结束标签是 </em> ,忽略结束标记并返回到 1。

当 1 的计算结果为 false 时(没有找到<),将剩余的字符串添加到结果resultString += string.substring(lastIndex, string.length);中.

按照这些步骤操作后,您已经解析了一个字符串。

关于javascript - 如何使用正则表达式检查所有 html 标签是否已关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7526759/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com