Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未处理的PromisejectionWarning:语法错误:无效的正则表达式:/\?(?<;query>;*)/:无效组_Javascript_Node.js_Regex - Fatal编程技术网

Javascript 未处理的PromisejectionWarning:语法错误:无效的正则表达式:/\?(?<;query>;*)/:无效组

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

我一直在为url查询开发一个解析器,但我很难理解为什么正则表达式在通过进行测试时是不正确的,或者至少我认为是这样的,这是一个深夜编码过程

不管怎样,我在StackOverflow和Good Ol'e google上都没有找到任何答案

问题:
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),等等。