javascript - 使用正则表达式 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
?如何更正我的正则表达式?
解决方案
当您将捕获组放在正则表达式中时,结果包括与每个组匹配的条目。由于您的组位于不同的备选方案中,当一个备选方案匹配时,其他备选方案将不会被使用,因此结果中的相应元素将为undefined
.
不要在每个备选方案中放置一个组,而是将组包裹在所有备选方案中。
console.log("https://www.test.com:8081/a/b/c".split(/(:\/\/|:|\/)/));