问题表现
微信小程序代码在安卓端执行正常,在ios端报错SyntaxError: Invalid regular expression: invalid group specifier name Stack: (native code)
原因
1、格式不对
// 错误格式
let reg = /(?<=\d{3})\d{4}(?=\d{4})/;
// 正确格式
let reg = /(?<=\\d{3})\\d{4}(?=\\d{4})/;
注意两点:
1.用//包裹改为用""包裹
2.\d等元字符改为\\d
2、ios不支持零宽断言
什么是零宽断言?
粗略总结:零宽断言是正则表达式中的一种方法,正则表达式在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。
错误代码:
//手机号脱敏代码片段
let reg = /(?<=\\d{3})\\d{4}(?=\\d{4})/;
return phone.replace(reg, '****')
在这种情况下,ios端就会报错SyntaxError: Invalid regular expression: invalid group specifier name Stack: (native code),需要换一种方式实现这个功能