求助前瞻/后瞻的正则打包不到 js 里嘛....

2020-03-26 20:33:29 +08:00
 xiaohantx
const reg = /(?<=\$\{)\w+(?=\})/g
// const reg = new RegExp('(?<=\$\{)\w+(?=\})', 'g')

试了下第一种打包之后除了谷歌核都报了错,上一页跳不过来

SyntaxError: Invalid regular expression: invalid group specifier name

搜了一些内容,好像可以第二种方式存放正则,但是}这样都地方 eslint 检测报错,强行保存页面中正则就会不起作用,

1002 次点击
所在节点    问与答
3 条回复
autoxbc
2020-03-26 23:02:19 +08:00
1. 后瞻断言不是标准的一部分,尽管有些浏览器支持
https://caniuse.com/#search=assertions

2. 后瞻断言总是可以用捕获组模拟
https://blog.csdn.net/example440982/article/details/85177133

3. 字面量写法总是和构造法得到的正则行为一致,这是标准对 JS 引擎的要求

4. 字面量和构造法对应的转义范围有区别,我粗略的记得字面量需要对所有正则有效符号转义,构造法不需要对任何字符转义除了转义符
/\d+/ ~= new RegExp('\\d+')
gqbre
2020-03-27 08:01:56 +08:00
@autoxbc 后瞻断言在 ES9(ES2018)中已经成为正式标准
xiaohantx
2020-03-27 10:42:30 +08:00
@gqbre
@autoxbc

浏览器暂时不支持情况- -只能取到 str 之后遍历数组用 replace 再过滤一遍了....

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/656529

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX