RegExp查找XML标记外的任何符号



在我的React项目中,我有一个这样的字符串:

<App>ew <View id="view1" visible="true">4</View>- <View id="view1" visible="true" width="100">WORD</View>s</App>

,我试图删除标签之外的任何符号和单词,即使文档是有效的XML。

结果应该是这样的:

<App><View id="view1" visible="true"></View> <View id="view2" visible="true" width="100"></View></App>

可能有另一种方法不使用RegExp,我很感激任何帮助

const regex = /(^|>)[^<]+/g;
const test = `abcd<App>ew <View id="view1" visible="true">4</View>- <View id="view1" visible="true" width="100">WORD</View>s</App>abcd`;
console.log(test.replace(regex, "$1"));

我真的很喜欢regex101.com,因为它解决了这样的问题。它有一个可搜索的快速参考,也解释了你当前的正则表达式是如何工作的,它是什么匹配。

这个匹配字符串的开头或文字>一组中的字符,后面跟着一个或多个非"<"字符。它使用globalregex选项允许它找到所有匹配,而不是在第一个之后停止。

然后替换所有匹配到组1($1)的引用。它处理第一个元素之前、最后一个元素之后或XML元素之间的任何内容。

这里有一个正则表达式的链接到regex101.com,这样你就可以看到他们的解释,因为它会比我的更好。

https://regex101.com/r/NgiyTZ/1