如何使用JavaScript匹配窗口当前URL中的字符串?

6

我使用了优秀的gskinner.com/RegExr/工具来测试我的字符串匹配正则表达式,但我无法弄清如何将其实现到我的JavaScript文件中以返回true或false。

我目前的代码如下:

^(http:)\/\/(.+\.)?(stackoverflow)\.

在类似于http://stackoverflow.com/questions/ask的URL上,这将匹配(根据RegExr)http://stackoverflow. 所以这很棒,因为我想尝试将当前的window.location与该字符串进行匹配,但是我遇到的问题是这个JavaScript脚本不起作用:
var url = window.location;
if ( url.match( /^(http:)\/\/(.+\.)?(stackoverflow)\./ ) ) 
{
    alert('this works');
};

你对我在这里做错了什么有什么想法吗?

感谢阅读。

Jannis

2个回答

3

如果您想测试域名(主机),window.location.host 可以提供您需要的信息(包括子域名)。

if( /^(.*\.)?stackoverflow\./.test(window.location.host) ){
    alert('this works');
}

3

window.location 不是一个字符串,它是一个对象。请使用 window.location.href


感谢您的帮助,但我无法解决这个问题,所以我采用了Pawel的解决方案,再次表示感谢。 - Jannis
这也是一个很好的答案。window.location是一个对象,.href和.host是它表示为字符串的属性。你可以使用其中任何一个,但我认为当你只对位置字符串的这一部分感兴趣时,location.host更好 :) - pawel
啊,现在我明白了,所以 href 会返回完整的 URL,而 host 只会到 http://sub.domain.ext/ 这一步? - Jannis
主机只会返回“sub.domain.ext”部分,因为那是主机。 - reko_t

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接