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
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****')