首页 > 解决方案 > 使用正则表达式 accur 'undefined' 拆分字符串

问题描述

我希望从 URL 中提取以下字段,例如协议、域名、端口和路径。

我知道这个split功能对我很有帮助。这是我的代码

"https://www.test.com:8081/a/b/c".split(/(:\/\/)|(:)|(\/)/)

结果是

["https", "://", undefined, undefined, "www.test.com", undefined, ":", undefined, "8081", undefined, undefined, "/", "a", undefined, undefined, "/", "b", undefined, undefined, "/", "c"]

我希望结果是

['https', '://', 'www.test.com', ':', '8081', '/', 'a/b/c']

为什么会发生undefined?如何更正我的正则表达式?

标签: javascriptregexsplitundefined

解决方案


当您将捕获组放在正则表达式中时,结果包括与每个组匹配的条目。由于您的组位于不同的备选方案中,当一个备选方案匹配时,其他备选方案将不会被使用,因此结果中的相应元素将为undefined.

不要在每个备选方案中放置一个组,而是将组包裹在所有备选方案中。

console.log("https://www.test.com:8081/a/b/c".split(/(:\/\/|:|\/)/));


推荐阅读