uni-app ios 正则不适配导致直接白屏 ?<=

uni-app ios 正则不适配导致直接白屏 ?<=

项目信息 详细信息
产品分类 uniapp/App
PC开发环境 Windows
PC开发环境版本 win7旗舰版 64位
HBuilderX类型 正式
HBuilderX版本 3.1.3
手机系统 iOS
手机系统版本 iOS 13.4
手机厂商 苹果
手机机型 iPhone6 plus
页面类型 vue
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

18751565875.replace(/(?<=\d{3})\d{4}/, ‘****’)

预期结果:

187****5875

实际结果:

ios手机白屏

bug描述:

(this.userInfo.phone + “”).replace(/(?<=\d{3})\d{4}/, ‘****’)


更多关于uni-app ios 正则不适配导致直接白屏 ?<=的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

ios自身的问题。。。 “18751565875”.replace(/^(\d{3})\d{4}/, ‘$1****’)

更多关于uni-app ios 正则不适配导致直接白屏 ?<=的实战教程也可以访问 https://www.itying.com/category-93-b0.html


那也不对,自定义基座就不会报错,也不会白屏

在 iOS 环境下,JavaScript 引擎对正则表达式的支持与 PC 浏览器存在差异。你使用的正则表达式 /(?<=\d{3})\d{4}/ 包含正向回顾后发断言(lookbehind),这是 ES2018 标准中的特性,但在 iOS 的 JavaScriptCore 引擎中可能不被完全支持,尤其是在较旧的 iOS 版本中。

当 uni-app 在 iOS 上运行时,如果遇到不支持的正则语法,可能会导致 JavaScript 执行错误,进而引发白屏。这是由 JavaScriptCore 的兼容性问题引起的,与 uni-app 框架本身无关。

建议改用兼容性更好的正则写法,避免使用后行断言。例如,可以使用捕获组实现相同的功能:

"18751565875".replace(/(\d{3})\d{4}/, '$1****')
回到顶部