用户识别基于列表的网站

时间:2014-05-03 17:24:03

标签: javascript regex

我有一长串用户自己制作的域名。 chrome扩展程序包含用于获取网址的内容脚本。

抱歉,如果这是重复的,研究网络但无法找到符合我特定需求的任何内容

所以基本上,我怎么能识别网站。用户可以输入www.google.com, or google.com or http://google.com or https://www.google.co

使用正则表达式,我的扩展如何绝对确定它们当前在该URL上。 (我不希望https://www.codeup.net/google被识别为google.com

假设列表在变量'listUrl'中,我使用document.URL获取当前页面的url,那么函数isUrlInList()会是什么样的?

2 个答案:

答案 0 :(得分:1)

就个人而言,我会使用location.hostname,因为它会为您提供当前的域名。当用户添加新域时,我会删除除主机名之外的所有内容,然后我会使用indexOf来确定该域是否在我的域数组中。

var domains = ['stackoverflow.com', 'google.com', 'yahoo.com'];
var current = location.hostname;

if(domains.indexOf(current) !== -1){
   // domain is in list
} else {
   // domain is not in list
}

即使您没有删除除主机名之外的所有内容,这也可以.btw。

答案 1 :(得分:0)

你不需要正则表达式。

您需要做的是遍历列表中的所有网址,并使用indexOf针对当前网址检查每个网址。

使用正则表达式的唯一原因是,如果您希望允许用户将正则表达式模式添加到URL列表中。

而且,您可能希望进行不区分大小写的比较,这样您就可以对列表中的所有URL以及检查时的当前URL进行规范化。