最近在做项目时有一个需求涉及到姓名脱敏,刚开始可开心的用正则去写,看着倒是没啥问题,等到测试的时候发现安卓手机显示是正常的,但是ios打开页面白屏了。然后我就带着疑问到网上看有没有遇到同样问题的小伙伴,幸运的是让我找到了嘻嘻。接下来就记录一下这个问题,方便以后查阅。
出现这个问题是因为正则表达式里包含了零宽断言,在安卓手机上正常,但是在ios上会报以下错误,导致页面空白打不开
Info Warn Error SyntaxError: Invalid regular expression: invalid group specifier name
常用的零宽断言有:?<=、?<!、?!、?=
解决方法如下:
showFirstName(name){
let newStr;
if (name.length === 2) {
newStr = name.substr(0, 1) + '*';
} else if (name.length > 2) {
let char = '';
for (let i = 0, len = name.length - 2; i < len; i++) {
char += '*';
}
newStr = name.substr(0, 1) + char + name.substr(-1, 1);
} else {
newStr = name;
}
return newStr;
}