Android调用replace方法正则表达式卡死
发布于 5 年前 作者 yinfang 6483 次浏览 来自 问答
  • 当前 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 回复

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

回到顶部