首页 > 解决方案 > 使用正则表达式不断删除所有内容

问题描述

我在每个标签中都有包含附加信息 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”和以“开头的标签的任何其他使用”

标签: javascriptregex

解决方案


这是因为^是表示“行首”的正则表达式特殊字符。你需要像\^这样逃避它才能工作。类似的东西/<Set\^\^[^>]*>/g应该可以解决问题。

小提示:上面的正则表达式假定您的示例中的“BLAH”字符串永远不会包含该>字符......但如果它包含,那么您的 XML 无论如何都是超级错误的。


推荐阅读