Invalid regular expression: invalid group specifier name safari白屏 chrome正常

787 阅读1分钟

代码环境:

@angular11

@node12

@ts

问题:

​编辑

原因:

safari不支持下面几种断言验证
(?!)零宽负向先行断言
(?=)零宽先行断言
(?<=)零宽后行断言
(?<!)零宽负向后行断言。

解决方案:

把项目中所有用正则的地方,写法改一下。

// 会报错 
let regExp = /(?<=:(?!/).*?/).*!/g; 
// 改成下面这种写法 
let regExp = new RegExp("(?<=:(?!/).*?/).*!", 'g');

参考文献 


更新:

根据 @前端天花板 的补充:

报错的根本原因是Webkit不支持这种正则,2022年底修复了。
​网页链接
safari >=16.4 可正常使用了
​网页链接

感谢@前端天花板 评论


再次更新:

​编辑

​编辑

根据浏览器版本介绍,理论上2023年3月27后的Safari版本才支持。