javascript - 使用正则表达式不断删除所有内容
问题描述
我在每个标签中都有包含附加信息 BLAH 的 XML。创建标签时,我使用常量(XMLSPLIT
作为常量XML_SPLITTER
)将额外信息与标签名称分开......我需要这样做,因为我是从 JSON 对象生成 XML 并且我不能有多个键那是一回事……但在 XML 输出中,不能有那些多余的东西。
例如:
....
<SetXMLSPLITBLAH>
<Value>9</Value>
<SetType>
<Name>Foo</Name>
</SetType>
</SetXMLSPLITBLAH>
...
所以,在生成 XML 之后,我会检查并清理它。我正在尝试使用正则表达式来做到这一点。我想,我想在拆分器之后删除一行上的任何内容,并将其替换为>
.
let reg = new RegExp("<Set"+XML_SPLITTER+"(.*)\/g");
cleanXML = dirtyXML.replace(reg, "<Set>")
这行不通。
我会注意到,我reg = /<Set(.*)/g;
和那个工作得很好......但它也捕获“SetType”和以“开头的标签的任何其他使用”
解决方案
这是因为^
是表示“行首”的正则表达式特殊字符。你需要像\^
这样逃避它才能工作。类似的东西/<Set\^\^[^>]*>/g
应该可以解决问题。
小提示:上面的正则表达式假定您的示例中的“BLAH”字符串永远不会包含该>
字符......但如果它包含,那么您的 XML 无论如何都是超级错误的。
推荐阅读
- android - SplashActivity 在冷启动时做了一个小跳跃
- typescript - NextJs/TS ESM 模块导入问题
- flutter - Flutter 小部件测试,在小部件中查找子小部件
- java - 如何防止 DocumentBuilderFactory 关闭底层输入流
- python - 全新安装后 Django-admin 无法运行
- python - python在循环计数器中添加一个值
- javascript - 如何将滑块指示器位置与滑块滚动位置同步
- java - 托管 HTTPSocket 服务器时,本地托管的图像未显示在浏览器上
- python - FFmpeg 抛出持续时间、时间戳、pts 错误
- azure-monitoring - azure 监视器警报类型中“指标测量”和“结果警报数量”之间的区别