Javascript 未处理的PromisejectionWarning:语法错误:无效的正则表达式:/\?(?<;query>;*)/:无效组
我一直在为url查询开发一个解析器,但我很难理解为什么正则表达式在通过进行测试时是不正确的,或者至少我认为是这样的,这是一个深夜编码过程 不管怎样,我在StackOverflow和Good Ol'e google上都没有找到任何答案 问题:Javascript 未处理的PromisejectionWarning:语法错误:无效的正则表达式:/\?(?<;query>;*)/:无效组,javascript,node.js,regex,Javascript,Node.js,Regex,我一直在为url查询开发一个解析器,但我很难理解为什么正则表达式在通过进行测试时是不正确的,或者至少我认为是这样的,这是一个深夜编码过程 不管怎样,我在StackOverflow和Good Ol'e google上都没有找到任何答案 问题:unhandledPromisejectionWarning:语法错误:无效正则表达式:/\?(?*)/:无效组 const results=url.match(/\?(?*)/); 如果(!结果){ 返回{}; } 常量{groups:{query}}=re
unhandledPromisejectionWarning:语法错误:无效正则表达式:/\?(?*)/:无效组
const results=url.match(/\?(?*)/);
如果(!结果){
返回{};
}
常量{groups:{query}}=results;
常量对=query.match(/(?\w+)=(?\w+)/g);
常量参数=成对减少((acc,curr)=>{
常量[键,值]=当前拆分(“=”);
acc[键]=值;
返回acc;
}, {});
返回参数;
命名捕获组仅在节点10+中受支持。您需要更新节点版本。(10以下的节点版本是,即使不是针对此问题,也最好进行更新)
如果出于某种原因不允许您这样做,您可以将其设置为普通捕获组,而不是命名捕获组:
/\?(*)/
然后从匹配中提取第一组([1]
)。从查询字符串中提取对也是如此
在Node的现代版本中,您还可以使用语义更丰富的对象。fromEntries
而不是reduce
:
const params = Object.fromEntries(
pairs.map(pair => pair.split('='))
);
哦,我甚至没有意识到我的节点在
v8.11.4
lol;我很久没有使用这台电脑了。谢谢你的建议。对不起,@CertainPerformance我忘了这么做,只是现在做了;我是在忙xDIs节点JS而不是ecmascript?我以为JS是由浏览器控制的。@Maxt8r JS可以在许多平台上运行。诚然,它在客户端浏览器上最为常见,但它也可以在后端的服务器上运行(使用Node.js),或者在桌面应用程序上运行(使用Electron),等等。