Open pikou1995 opened 3 years ago
今天踩了坑,chrome 浏览器是正常的,但是 safari 浏览器中部分页面打不开。因为首页是 ssr 渲染的,所以看起来没问题。而子页面使用组件懒加载,webpack 分的 async chunk 资源下载下来后,safari 浏览器控制台报 chunkLoadError。于是打开 js 文件,只见
chunkLoadError
invalid regular expression: invalid group specifier name
搜索上方关键报错,看到排在搜索引擎 第二位 提供了一个解决方案,把字面量的表达式换成 new RegExp 的方式创建 。配合第一个结果 safari 不支持后行断言(lookbehind),我当时理解成了 先行断言(lookahead)和后行断言(lookbehind) 的正则表达式都可以改成 new RegExp 的方式变为不报错的。后面发现这个文章是错误的。
new RegExp
改了之后确实不报错了。我简单测试了其中一个正则表达式,恰好是 先行断言(lookahead) 的正则表达式,本来 safari 就支持,所以我的测试顺利通过了,于是我天真的以为解决了,开始准备把这个坑记录下来。结果写文章的时候,发现根本不是改个写法的事,不支持就是不支持。而为什么不报错,是因为 new RegExp 运行到的时候才会创建对应的正则表达式,如果当时我都测一遍,肯定还是会报错的,测试覆盖不到也是我的问题。
经过 safari 浏览器测试:
// safari 支持 /x(?=y)/ // 先行断言 new RegExp('x(?=y)') /x(?!y)/ // 正向否定查找 new RegExp('x(?!y)') // safari 不支持 /(?<=y)x/ // 后行断言 new RegExp('(?<=y)x') /(?<!y)x/ // 反向否定查找 new RegExp('(?<!y)x')
还总结了一些教训:
LGTM 👍
yyds
👍👍
今天踩了坑,chrome 浏览器是正常的,但是 safari 浏览器中部分页面打不开。因为首页是 ssr 渲染的,所以看起来没问题。而子页面使用组件懒加载,webpack 分的 async chunk 资源下载下来后,safari 浏览器控制台报
chunkLoadError
。于是打开 js 文件,只见第一坑
搜索上方关键报错,看到排在搜索引擎 第二位 提供了一个解决方案,把字面量的表达式换成
new RegExp
的方式创建 。配合第一个结果 safari 不支持后行断言(lookbehind),我当时理解成了 先行断言(lookahead)和后行断言(lookbehind) 的正则表达式都可以改成new RegExp
的方式变为不报错的。后面发现这个文章是错误的。第二坑
改了之后确实不报错了。我简单测试了其中一个正则表达式,恰好是 先行断言(lookahead) 的正则表达式,本来 safari 就支持,所以我的测试顺利通过了,于是我天真的以为解决了,开始准备把这个坑记录下来。结果写文章的时候,发现根本不是改个写法的事,不支持就是不支持。而为什么不报错,是因为
new RegExp
运行到的时候才会创建对应的正则表达式,如果当时我都测一遍,肯定还是会报错的,测试覆盖不到也是我的问题。结论
经过 safari 浏览器测试:
还总结了一些教训: