如何使用 JavaScript 循环长字符串以在每次匹配后插入新字符串

2024-03-16

我有一个变量,其中包含表示 XML 文档的长字符串。在该字符串中,我需要搜索每个自关闭标签并扩展到两个匹配的开始/结束标签。我真的不知道如何解决这个问题,非常感谢您的建议。此时,我所知道的是如何通过正则表达式匹配自关闭标签:[^<]+?/>这是我想要完成的一个简短示例:

原始字符串:

<outer-tag>
    <inner-tag-1>
        <SELF-CLOSING-TAG-1 foo="bar"/>
        <SELF-CLOSING-TAG-2/>
    </inner-tag-1>
    <inner-tag-2>
        <SELF-CLOSING-TAG-3 attr="value"/>
    </inner-tag-2>
</outer-tag>

修改后的字符串:

<outer-tag>
    <inner-tag-1>
        <SELF-CLOSING-TAG-1 foo="bar"></SELF-CLOSING-TAG-1>
        <SELF-CLOSING-TAG-2></SELF-CLOSING-TAG-2>
    </inner-tag-1>
    <inner-tag-2>
        <SELF-CLOSING-TAG-3 attr="value"></SELF-CLOSING-TAG-3>
    </inner-tag-2>
</outer-tag>

我已经用过w3规格 http://www.w3.org/TR/REC-xml/#NT-Name创建一个正则表达式,它可以正确解析格式良好的 XML 中的标签。

首先,选择定义开始标签的字符(根据规范)。然后,匹配剩余的字符,排除可能的尾随空格和/>。全局替换匹配的子字符串
"<" + starttag + remaining + "></" + starttag + ">"。见下文:

//According to the W3 spec: 
var pattern = /<([:A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][-.0-9\xB7\u0300-\u036F\u0203F-\u2040]*)([^>]*?)\s*?\/>/g;
string.replace(pattern, '<$1$2></$1>');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 JavaScript 循环长字符串以在每次匹配后插入新字符串 的相关文章

随机推荐

  • 在 shell 中重命名多个文件[重复]

    这个问题在这里已经有答案了 我在一个目录中有多个文件 例如 linux file1 mp4 linux file2 mp4等等 如何使用 shell 移动这些文件 以便名称为file1 mp4 file2 mp4等等 我有大约 30 个文件
  • 显示来自 Rails 应用程序的 Twitter feed

    我已经能够让用户通过 OmniAuth 登录 Twitter 我遵循 Railscast 235 6 并制作了一个简单的应用程序 现在我正在尝试显示已登录用户的 Twitter 提要 谁能告诉我这是怎么做到的 如何初始化 Twitter 如
  • Git http.proxy 设置

    我试图弄清楚这个 git 问题 有一次我搞乱了 http proxy 变量 现在这只是废话 asdf 所以推动不起作用 我不知道之前的代理设置是什么 我什至不知道代理服务器是什么 有什么方法可以将 http proxy 设置为正确的值吗 现
  • 将 Zookeeper 从 3.3.X 升级到 3.4.X 时,我需要了解哪些信息?

    我有一个 Zookeeper 整体 我想从 3 3 X 分支升级到 3 4 X 分支 这可以在实时集群上完成吗 需要停机吗 有什么说明可以在某处找到吗 据我检查 升级 ZooKeeper 有哪些选项 流程 有两种主要方法可以做到这一点 1
  • 数据报总是被完整接收吗?

    大多数数据报接收函数 例如c的recv或read java的DatagramPacket类或python的SocketServer 都包含找出接收数据量的可能性 c int amount recv sock buf n MSG WAITAL
  • ASP.NET Web API - OWIN - TokenEndPointPath 在 IIS 中不起作用

    我的startup cs 中有以下代码 当 Web API 项目部署到 IIS 中网站的根目录时 在 IIS Express 中设置 TokenEndpointPath 效果非常好 但是 如果我托管在 IIS 中的嵌套应用程序 即网站内的应
  • 使用php从linux访问windows共享文件夹

    我需要能够使用在 Linux 服务器上运行的 php 脚本访问多个 Windows 服务器上的一些共享文件夹 我只需要获取文件夹中包含的文件的名称以及创建它们的时间戳 到目前为止 我想到的唯一解决方案是在 Linux 中安装共享并从那里访问
  • C# 在锯齿状数组中快速查找值的方法

    我有一个锯齿状数组String 现在我需要找到具有特定值的数组String n 0 我现在所拥有的只是一个简单的 foreach foo in bar if foo 0 needle return foo 正如您所看到的 由于显而易见的原因
  • 在 setup.py 中安装 numpy + pandas 作为依赖项

    安装中numpy pandas通过 setuptools 作为 setup py 中的依赖项对我不起作用 这与缺少依赖项无关 如果我通过安装 numpypip install numpy然后python setup py develop一切
  • 将两种不同的字体样式应用于 TextView

    我想将两种不同的字体样式应用于单个 TextView 中的文本 我的情况与Android 两句话 两种样式 一个TextView https stackoverflow com questions 8999781 android two s
  • 检测客户端中止请求 Jersey

    我有 Jersey 提供轻松的网络服务 客户端经常会中止通过 ajax 完成的请求 使用 ajax 中止方法 如下所述中止 ajax 请求 https stackoverflow com questions 4551175 how to c
  • 构造函数中引发的异常的处理程序是什么? [复制]

    这个问题在这里已经有答案了 我是 C 异常处理的新手 我心中的规则是 如果没有找到异常处理程序调用链 函数调用的堆栈 然后终止函数被调用 处理程序是一个catch block 但是 我无法理解以下行为 include
  • Java重复模式匹配

    我正在尝试获取 Java 中简单正则表达式的每个重复匹配项 它匹配 中包含的任何字符串 只要它不包含 字符 例如 它会匹配 a nice repetitive pattern 事先不知道存在多少个这样的组 并且我无法找到通过模式匹配器访问各
  • 当从 dom-repeat 函数设置时,属性更改未反映在 UI 中 - Polymer

    我有对象数组和属性 我的 dom repeat 结构如下所示
  • 您正在使用 Microsoft 企业库吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在android中添加徽章到选项卡

    我想像在 iPhone 中一样在我的应用程序中添加徽章到选项卡 iPhone 中使用的徽章屏幕截图位于以下链接 i have done some image like badge in android app its screen shot
  • R:删除数值向量中的 NA

    我是一名 R 新手 面临一些挑战 我正在处理一个从 csv 文件中读取的大型数据框 我的数值向量包含 NA 这阻止我进行分析 如何摆脱这些 NA 以便我可以真正利用我的数据做一些事情 对于特定变量 x is na x or na omit
  • Stripe 结账不接受元数据

    我已经集成了 Stripe checkout 最新版本 并且需要发送额外的数据 以便我可以协调以后的 webhook Stripe 拒绝元数据并出现以下错误 Fatal error Uncaught exception Stripe Err
  • 我是否需要付费 Apple 开发者帐户才能获得 .p12 认证来推送通知?

    我正在使用 iOS 测试 AWS Mobile Hub 以实现推送通知功能 AWS 要求上传 p12 证书 该证书可以通过 Apple Developer 网站获取 但根据教程 维护标识符 设备和配置文件 没有出现在我的 Apple 开发者
  • 如何使用 JavaScript 循环长字符串以在每次匹配后插入新字符串

    我有一个变量 其中包含表示 XML 文档的长字符串 在该字符串中 我需要搜索每个自关闭标签并扩展到两个匹配的开始 结束标签 我真的不知道如何解决这个问题 非常感谢您的建议 此时 我所知道的是如何通过正则表达式匹配自关闭标签 lt gt 这是