UnhandledPromiseRejectionWarning: SyntaxError:

我一直在研究用于 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;


偶然的你
浏览 268回答 1
1回答

神不在的星期二

命名捕获组仅在 Node 10+ 中受支持。您需要更新您的节点版本。(低于 10 的节点版本非常旧,即使不是因为这个问题,更新也是个好主意)如果出于某种原因不允许您这样做,您可以将其设为普通捕获组而不是命名捕获组:/\?(.*)/然后从匹配 ( [1]) 中提取第一组。从查询字符串中提取对也是如此。在现代版本的 Node 上,您还可以使用更语义化的Object.fromEntries而不是reduce:const params = Object.fromEntries(   pairs.map(pair => pair.split('=')) );
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript