我正在尝试解决一个问题,我需要知道我的 url 字符串前面是否有 URL 方案(不限于 http、https)。我可以link.indexOf(://); 然后取“://”之前任何内容的子字符串,但如果我有这样的情况,例如:
example.com?url=http://www.eg.com
Run Code Online (Sandbox Code Playgroud)
在这种情况下,子字符串将返回整个字符串,即
example.com?url=http这是不正确的。它应该返回我“”,因为我的网址没有预先添加协议。
我需要查明 url 是否以协议开头。
您可以使用一些正则表达式轻松完成此操作。该模式/^[a-z0-9]+:\/\//将能够提取它。
如果您只想测试它是否有,请使用pattern.test()获取布尔值:
/^[a-z0-9]+:\/\//.test(url); // true
Run Code Online (Sandbox Code Playgroud)
如果您想要它是什么,请使用url.match()协议部分并将其括在括号中:
url.match(/^([a-z0-9]+):\/\//)[1] // https
Run Code Online (Sandbox Code Playgroud)
这是一个可运行的示例,其中包含一些示例 URL。
/^[a-z0-9]+:\/\//.test(url); // true
Run Code Online (Sandbox Code Playgroud)