【发布时间】:2018-07-26 20:17:24
【问题描述】:
我希望转换这个 ssh url
[user@]server:project.git
到这个 ssh 网址
ssh://[user@]server/project.git
我在下面有这个函数,这就是转换字符串所需的全部内容吗?是否有任何故障点或优化?
function getCleanSshUrl (location) {
let parsedLocation = url.parse(location)
if (!parsedLocation.protocol) {
parsedLocation = url.parse(`ssh://${location}`)
const hasColon = location.match(parsedLocation.hostname + ':')
if (hasColon) {
parsedLocation.pathname = parsedLocation.pathname.replace(/^\/:/, '/')
}
}
return url.format(parsedLocation)
}
是否可以在一个正则表达式中完成所有这些操作?
【问题讨论】:
-
你不是在做一个简单的替换
"[user@]server:project.git".replace(/([^:]+):(.*)/, "ssh://$1/$2")吗? -
我正在寻找一个正则表达式,它可以为两个字符串 "ssh://[user@]server 产生相同的输出 "ssh://[user@]server/project.git" /project.git”和“[user@]server:project.git”。
标签: javascript regex url url-scheme urlparse