如果正则表达式中包含零宽断言的话 , 在安卓手机上正常 , 但是在ios上会报以下错误
Info Warn Error SyntaxError: Invalid regular expression: invalid group specifier name
常用零宽断言:?<=、?<!、?!、?=
例如:只显示姓名开头第一个字(正则),格式:张**
//只显示姓名开头第一个字
data.replace(/(?<=.)./g, '*')
这种写法在安卓是正常的,IOS就不行,因为该正则包含了零宽断言,会导致页面空白,打不开,需要相对应的转换,但是由于笔者的半吊子正则水平,一时半会还真修改不出来。
第一种:张**
/**
* 只显示姓氏
* @param {data} 传入数据
* 格式:张**
*/
const 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 - 1; i < len; i++) {
char += '*';
}
newStr = name.substr(0, 1) + char;
} else {
newStr = name;
}
return newStr;
}
第二种:张*三
/**
* 隐藏中间一个字
* @param {data} 传入数据
* 格式:张*三
*/
const 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;
}