467 - 《正则 Lookbehind 和 Named Capture Group》

发布于 2024年8月29日

1、今天答疑时遇到一例反馈,低概率线上报错,报错信息是「SyntaxError: Invalid regular expression: invalid group specifier name」。

2、ChatGPT 一番,告诉我是浏览器不支持「Named capture groups」,但 caniuse 了一下 好像不太对,Safari 17 才支持,如果用了这个语法,应该会大量报错才对。而且,Named capture groups Babel 是支持转换为低版本浏览器的用法的,不应该报错才对。所以,Safari 的 Bug,误报?

3、在产物里用关键词「?<=」搜了下,果然有几处,比如 operator:/[;:?<=>~/@!$%&+\-|^(){}*#]/,punctuation:/[\[\].,]/}} 。经同事提醒,这是 Lookbehind,Safari 16.4 以上才支持,所以报错应该是和这个有关了。而且 Babel 也处理不了这个

4、遇到了怎么办?如果是源码,只能改正则;如果是依赖,只能换依赖,或者用 patch-package 修改依赖的代码(但不推荐)。

5、所以,这个语法其实是个隐藏炸弹。Babel 等工具处理不了(转不成低版本浏览器支持的语法

内容预览已结束

此内容需要会员权限。请先登录以查看完整内容。