gpt4 book ai didi

regex - 正则表达式的重构起点

转载 作者:行者123 更新时间:2023-12-04 03:56:42 24 4
gpt4 key购买 nike

我有一个函数可以将 HTML 标记 strip 化以显示在文本元素内。

stripChar: function stripChar(string) {
string = string.replace(/<\/?[^>]+(>|$)/g, "")
string = string.trim()
string = string.replace(/(\n{2,})/gm,"\n\n");
string = string.replace(/&hellip;/g,"...")
string = string.replace(/&nbsp;/g,"")
let changeencode = entities.decode(string);
return changeencode;
}

这对我来说效果很好,但我有一个新要求,我很难弄清楚我应该从哪里开始重构上面的代码。我仍然需要删除上面的内容,但我有 2 个异常(exception);

  • 列出项目,<ul><li> ,我需要处理这些,以便它们仍然显示为要点
  • 超链接,我想使用 react-native-hyperlink,所以我需要离开 intack <a>由我单独处理

虽然该功能非常适合通用标签替换,但它不太适合我的上述需求。

最佳答案

你可以使用

stripChar: function stripChar(string) {
string = string.replace(/&nbsp;|<(?!\/?(?:li|ul|a)\b)\/?[^>]+(?:>|$)/g, "");
string = string.trim();
string = string.replace(/\n{2,}/g,"\n\n");
string = string.replace(/&hellip;/g,"...")
let changeencode = entities.decode(string);
return changeencode;
}

主要变化:

  • .replace(/ /g,"") 移到第一个replace
  • 第一个 replace 现在与新的正则表达式模式一起使用,其中 liula 标记使用否定先行 (?!\/?(?:li|ul|a)\b) 从匹配中排除。

参见 updated regex demo here .

关于regex - 正则表达式的重构起点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63751429/

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