如何检查url字符串javascript中是否存在url方案

如何检查url字符串javascript中是否存在url方案,javascript,regex,Javascript,Regex,我试图解决一个问题,我需要知道我的URL字符串是否有一个URL方案(不限于http、https)。 我可以做link.indexOf(:/);然后取“://”之前任何内容的子字符串,但如果我有一个例子,例如: example.com?url=http://www.eg.com 在这种情况下,子字符串将返回整个字符串,即。 example.com?url=http这是不正确的。它应该返回我“”,因为我的url前面没有协议 我需要知道url是否包含协议。您可以使用大多数浏览器支持的API func

我试图解决一个问题,我需要知道我的URL字符串是否有一个URL方案(不限于http、https)。 我可以做
link.indexOf(:/)
;然后取“://”之前任何内容的子字符串,但如果我有一个例子,例如:

example.com?url=http://www.eg.com
在这种情况下,子字符串将返回整个字符串,即。
example.com?url=http
这是不正确的。它应该返回我“”,因为我的url前面没有协议

我需要知道url是否包含协议。

您可以使用大多数浏览器支持的API

function getProtocol(str) {
    try {
        var u = new URL(str);
        return u.protocol.slice(0, -1);
    } catch (e) {
        return '';
    }
}
用法 您可以使用大多数浏览器支持的API

function getProtocol(str) {
    try {
        var u = new URL(str);
        return u.protocol.slice(0, -1);
    } catch (e) {
        return '';
    }
}
用法
你可以很容易地用一点正则表达式。模式
/^[a-z0-9]+:\/\/
将能够提取它

如果您只想测试它是否有,请使用
pattern.test()
获取布尔值:

/^[a-z0-9]+:\/\//.test(url); // true
如果您想知道它是什么,请使用
url.match()
并将协议部分用括号括起来:

url.match(/^([a-z0-9]+):\/\//)[1] // https
下面是一个可运行的示例,其中包含几个示例URL

constURL=['file://test.com', 'http://test.com', 'https://test.com“,”example.com?http'];
console.log(
url.map(url=>(url.match(/^([a-z0-9]+):\/\/)| |[])[1])

);只需一点正则表达式,就可以很容易地完成。模式
/^[a-z0-9]+:\/\/
将能够提取它

如果您只想测试它是否有,请使用
pattern.test()
获取布尔值:

/^[a-z0-9]+:\/\//.test(url); // true
如果您想知道它是什么,请使用
url.match()
并将协议部分用括号括起来:

url.match(/^([a-z0-9]+):\/\//)[1] // https
下面是一个可运行的示例,其中包含几个示例URL

constURL=['file://test.com', 'http://test.com', 'https://test.com“,”example.com?http'];
console.log(
url.map(url=>(url.match(/^([a-z0-9]+):\/\/)| |[])[1])

);没错,但如果我给你一个字符串:“http:/www.example.com”,它不应该返回“http”either@user564927有趣的单斜杠在Chrome、Firefox和Edge中的作用似乎相同。事实上,斜杠也不起作用。
http:www.example.com
@user564927进一步调查后,看起来单斜杠是完全有效的,但从技术上讲,它的含义与双斜杠不同。大多数浏览器将单斜杠视为用户错误,将双斜杠视为用户错误。没错,但如果我给你一个字符串:“http:/www.example.com”,它不应该返回“http”either@user564927有趣的单斜杠在Chrome、Firefox和Edge中的作用似乎相同。事实上,斜杠也不起作用。
http:www.example.com
@user564927进一步调查后,看起来单斜杠是完全有效的,但从技术上讲,它的含义与双斜杠不同。大多数浏览器将单斜杠视为用户错误,并将其视为双斜杠。