我正在尝试解决一个问题,我需要知道是否有一个 URL 方案(不限于 http、https)添加到我的 url 字符串之前。
我可以做 link.indexOf(://)
;然后在“://”之前获取任何内容的子字符串,但如果我有一个例子:
example.com?url=http://www.eg.com
在这种情况下,子字符串将返回整个字符串,即
example.com?url=http
这是不正确的。它应该返回“”,因为我的 url 没有前置协议(protocol)。
我需要查明 url 是否以协议(protocol)为前缀。
最佳答案
您可以使用一点正则表达式轻松完成此操作。模式 /^[a-z0-9]+:\/\//
将能够提取它。
如果你只是想测试它是否有它,使用 pattern.test()
得到一个 bool 值:
/^[a-z0-9]+:\/\//.test(url); // true
如果你想要它是什么,使用 url.match()
并将协议(protocol)部分括在括号中:
url.match(/^([a-z0-9]+):\/\//)[1] // https
这是一个带有几个示例 URL 的可运行示例。
const urls = ['file://test.com', 'http://test.com', 'https://test.com', 'example.com?http'];
console.log(
urls.map(url => (url.match(/^([a-z0-9]+):\/\//) || [])[1])
);
关于javascript - 如何检查url字符串javascript中是否存在url方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43742328/