为了账号安全,请及时绑定邮箱和手机立即绑定

UnhandledPromiseRejectionWarning: SyntaxError:

UnhandledPromiseRejectionWarning: SyntaxError:

偶然的你 2023-05-25 16:57:31
我一直在研究用于 url 查询的解析器,但我很困惑为什么正则表达式在通过regex101.com 进行测试期间工作时不正确,或者至少我认为是这样,这是一个深夜编码;问题:UnhandledPromiseRejectionWarning: SyntaxError: Invalid regular expression: /\?(?<query>.*)/: Invalid group   const results = url.match(/\?(?<query>.*)/);    if (!results) {        return {};    }    const { groups: { query } } = results;    const pairs = query.match(/(?<param>\w+)=(?<value>\w+)/g);    const params = pairs.reduce((acc, curr) => {        const [key, value] = curr.split(("="));        acc[key] = value;        return acc;    }, {});    return params;
查看完整描述

1 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

命名捕获组仅在 Node 10+ 中受支持。您需要更新您的节点版本。(低于 10 的节点版本非常旧,即使不是因为这个问题,更新也是个好主意)

如果出于某种原因不允许您这样做,您可以将其设为普通捕获组而不是命名捕获组:

/\?(.*)/

然后从匹配 ( [1]) 中提取第一组。从查询字符串中提取对也是如此。

在现代版本的 Node 上,您还可以使用更语义化的Object.fromEntries而不是reduce

const params = Object.fromEntries(
  pairs.map(pair => pair.split('='))
);


查看完整回答
反对 回复 2023-05-25
  • 1 回答
  • 0 关注
  • 265 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信