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

标签 javascript regex

我正在尝试解决一个问题,我需要知道是否有一个 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/

相关文章:

javascript - 如何在 Redux 中不使用 .toYS() 的情况下将 Immutable js 数据结构转换为用例数组?

javascript - 如何在 React JSX 中除最后一个元素之外的每个元素之后在 array.map 中添加一个逗号

javascript - socket.on 不在客户端工作

javascript - 链式 promise 发挥作用

javascript - 如何等到异步回调完成后再使用检索到的数据?

regex - Scala:将字符串与正则表达式列表进行匹配

regex - 匹配小数

regex - Oracle中限制字符串中字符的最快方法是什么?

c# - 替换为 .Replace/.Regex

c# - 在 C# 中使用什么正则表达式从后面的单词开始匹配(向后匹配...)直到匹配?