gpt4 book ai didi

JavaScript 正则表达式在字符串末尾查找开始标签

转载 作者:行者123 更新时间:2023-12-03 08:30:14 25 4
gpt4 key购买 nike

我正在寻找一个 Javascript 正则表达式来查找字符串末尾开始标记。我想找到所有开始标记(中间没有其他常规文本),后面仅跟有其他开始标记,或者直到最后都没有字符串。

示例字符串:<b>sds</b>This is a<u> test.<br><b><span class="test"> ;

期望的结果 <b><span class="test">

编辑:澄清一下:我确实必须处理包含部分 html 内容的字符串。它是一 block 本身无效的 html。因此我无法在 dom 节点上进行操作。由于我处于一个非常特殊的环境中,我没有嵌套标签,也没有无效标签 - 只是常规内联标签(甚至只有 u,b,i,span,sup,sup,img,br)。

我愿意接受不包含正则表达式的解决方案,但我无法在此处使用 dom 节点。

最佳答案

这不仅是您应该的,也是您不能的。正则表达式可以捕获组并稍后在字符串中再次查找它们,因此理论上您可以找到匹配的 HTML 标签。查找哪些标签不匹配 - 或者尝试在不合格的 HTML 代码中查找标签对 - 似乎相当复杂。您还需要忽略所有属性和属性名称。这很快就会失控。

但是,Regex 显然无法为您解决此问题,因为当您有多个相同的标签时,以及当您可能有无效的交叉标签(例如 <b><i>Sample text</b></i>)时。我认为不可能解决所有异常情况,但我认为可以肯定地说,如果可以在单个正则表达式中完成它,那么将花费大量时间来运行并永远编写。

此外,如果您需要检测不以/>结尾的自动关闭元素,考虑到时不时地将新元素添加到 HTML 并且您的代码将无法处理它们,这使得事情变得更加不可行。

如果您想修复某些问题,最好的选择是使用 DOM 操作。或者首先创建良好的 HTML。

编辑:即使格式良好的文档也无法使用,因为当连续存在同一标签的多个实例时,无法找到哪个标签与哪个标签匹配。示例:http://regexr.com/3c2mb

关于JavaScript 正则表达式在字符串末尾查找开始标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33368129/

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