[前端][m8] iOS 环境下白屏
问题现象
iOS 环境下白屏, 无法打开页面,开启vconsole
失败
版本信息
问题原因
utils/string 里面有个 api 是用来影藏身份证中间几位的功能,我看了 m8 框架是没有自带的。这个写法里面有个断言语句,在 iOS 端是不支持断言的,会导致 js 阻塞渲染。
正则表达式零宽断言(?=、?<=、?!、?<!)
- (?=exp) 也叫零宽度正预测先行断言,例:\b\w+(?=ing\b),匹配以 ing 结尾的单词的前面部分
- (?<=exp) 也叫零宽度正回顾后发断言,例:(?<=\bre)\w+\b 会匹配以 re 开头的单词的后半部分
- (?!exp) 也叫零宽度负预测先行断言,例:\d{3}(?!\d)匹配三位数字,而且这三位数字的后面不能是数字
- (?<!exp) 也叫零宽度负回顾后发断言来断言,例:(?<![a-z])\d{7}匹配前面不是小写字母的七位数字
排查步骤
解决方案
- 修改断言方法
formatIdentity(number) {
number += '';
return number.replace(/(\d{5})\d*([\dX]{4})/g, '$1*********$2');
}