收藏
回答

Android调用replace方法正则表达式卡死

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug replace函数 客户端 6.6.7 2.2.5

- 当前 Bug 的表现(可附上截图)


之前一直正常,近一个月突然反馈此问题:Android(使用了多部Android手机皆如此)调用以下方法使用正则匹配卡死,iPhone执行相同方法可以达到效果。




- 提供一个最简复现 Demo

替换内容中html标签

function convertHtmlToText(inputText) {

var returnText = "" + inputText;

returnText = returnText.replace(/<\/div>/ig, '\r\n');

returnText = returnText.replace(/<\/li>/ig, '\r\n');

returnText = returnText.replace(/<li>/ig, ' * ');

returnText = returnText.replace(/<\/ul>/ig, '\r\n');

returnText = returnText.replace(/<br\s*[\/]?>/gi, "\r\n");

returnText = returnText.replace(/<p.*?>/gi, "\r\n");

returnText = returnText.replace(/<a.*href="(.*?)".*>(.*?)<\/a>/gi, " $2 ($1)");

returnText = returnText.replace(/<script.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/script>/gi, "");

returnText = returnText.replace(/<style.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/style>/gi, "");

returnText = returnText.replace(/<(?:.|\s)*?>/g, "");

returnText = returnText.replace(/(?:(?:\r\n|\r|\n)\s*){2,}/gim, "\r\n\r\n");

returnText = returnText.replace(/ +(?= )/g, '');

returnText = returnText.replace(/ /gi, " ");

returnText = returnText.replace(/&\w+;/gi, "");

returnText = returnText.replace(/"/gi, '"');

returnText = returnText.replace(/</gi, '<');

returnText = returnText.replace(/>/gi, '>');


return returnText;

}


回答关注问题邀请回答
收藏

1 个回答

  • 卢霄霄
    卢霄霄
    2018-10-01

    这么复杂一大坨。。是要做啥啊

    2018-10-01
    有用
    回复 8
    • 好久不见
      好久不见
      2018-10-08

      可以理解为去掉字符串中的html标签

      2018-10-08
      回复
    • 卢霄霄
      卢霄霄
      2018-10-08回复好久不见

      你目的是去掉部分标签吗?还不是全部

      2018-10-08
      回复
    • 好久不见
      好久不见
      2018-10-08回复卢霄霄

      应该是全部吧,我们库里的文章处理后都可以了,其他的没有遇到就没有整理了

      2018-10-08
      回复
    • 卢霄霄
      卢霄霄
      2018-10-08回复好久不见

      光是标签去掉,标签里的内容留下?

      2018-10-08
      回复
    • 卢霄霄
      卢霄霄
      2018-10-08回复好久不见

      不是能一行写吗

      replace(/<\/?.+?>/ig,"")

      2018-10-08
      回复
    查看更多(3)
登录 后发表内容