javascript - 当字符串没有协议(protocol)时匹配主机名 ://?

标签 javascript regex string parsing pattern-matching

我使用此 js 代码来匹配字符串中的主机名:

url.match(/:\/\/(www\.)?(.[^/:]+)/);

当 url 以 protocol://开头时,此方法有效。例如:

这工作正常:

var url = "http://domain.com/page";
url.match(/:\/\/(www\.)?(.[^/:]+)/);

但这不是:

var url = "domain.com/page";
url.match(/:\/\/(www\.)?(.[^/:]+)/);

我已经尝试过:

url.match(/(:\/\/)?(www\.)?(.[^/:]+)/);

当它不包含protocol://时,它与主机名很好匹配,但当它包含它时,它只返回协议(protocol)而不是主机名。

当域名不包含该域名时,我如何匹配该域名?

最佳答案

我用了this function来自 Steven Levithan,它可以很好地解析 url。

以下是如何使用此功能

  alert(parseUri("www.domain.com/foo").host)

关于javascript - 当字符串没有协议(protocol)时匹配主机名 ://?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7813063/

相关文章:

c - 如何限制用户只能输入文字,不能输入数字?

javascript - 一旦 HTML 在 Angular 4 中完全动态呈现,我如何在 jQuery 中调用函数?

javascript - 返回 defer 本身和返回 defer.promise 的区别

javascript - 如何控制window.open方法打开的opener页面

string - TWISTED 最长公共(public)子序列

java - 运行应用程序时创建字符串

javascript - 我的图片幻灯片与页脚不协调。部分幻灯片位于页脚后面,不会向下滚动

python - 在python中查找关键字后的单词

python - 提取模式中的单词

javascript - 当替换字符串中包含正则表达式时,为什么 str.replace() 的行为会很奇怪?