HarmonyOS 鸿蒙Next使用webview,正则执行两次就会冻结卡死

发布于 1周前 作者 songsunli 来自 鸿蒙OS

HarmonyOS 鸿蒙Next使用webview,正则执行两次就会冻结卡死

webview中执行两次  const a_regex = new RegExp(’<a[^>]>(.?)</a>’, ‘gi’);

    const http_regex = /(?<=’).?(?=’)/

    const text_regex = /(?<=>).?(?=<)/

    const spanList = text.match(a_regex)

正则,就会导致卡死,有碰到这个情况吗


更多关于HarmonyOS 鸿蒙Next使用webview,正则执行两次就会冻结卡死的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复
楼主您好,可能是由于正则表达式匹配的文本太大,导致内存占用过高而导致卡死。可以提供复现的完整代码吗。

更多关于HarmonyOS 鸿蒙Next使用webview,正则执行两次就会冻结卡死的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


const a_regex = new RegExp('<a[^>]*>(.*?)<\/a>', 'gi');

如果改为不加修饰符gi,比如

const a_regex = new RegExp('<a[^>]*>(.*?)<\/a>');就不会卡死

​​​​​​​

针对HarmonyOS 鸿蒙Next使用webview时正则执行两次就会冻结卡死的问题,这通常是由于正则表达式匹配的文本过大,导致内存占用过高而引起的。

具体解决方案包括:

  • 优化正则表达式:尝试简化正则表达式,减少其复杂性和匹配范围,以降低内存占用。
  • 限制匹配文本大小:在处理大量文本时,考虑将文本分割成小块进行处理,避免一次性匹配过大的文本。
  • 避免使用全局修饰符:如果可能,避免在正则表达式中使用全局修饰符(如’g’),因为这可能导致正则表达式在整个文本中多次匹配,增加内存消耗。

如果以上方法仍然无法解决问题,建议检查鸿蒙系统的版本是否支持当前webview的所有功能,或者尝试更新系统至最新版本。同时,也可以查看鸿蒙系统的开发者文档,了解是否有关于webview性能优化的更多信息。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!