2014-10-08 224 views
1

使用包含多个URL的数组(包括http://www.example.com)。在JS中使用正则表达式来过滤字符串/ URL

现在即时通过使用document.URL来检查我是否在其中一个网站上。如果我是,它应该执行各种操作。但是,我也想在http://www.example.com?params=something上执行相同的操作。

这是我的尝试来解决它。

for(var l=0;l<urlList.length;l++) { 
       var url = urlList[l]; 
       if(document.URL == url || document.URL == (url + '\?.*') { 

我在做什么错?如何正确使用该正则表达式(如果它是正确的表达式)?

在此先感谢!

回答

0

它很可能是足够使用的indexOf:

for(var l=0;l<urlList.length;l++) { 
      var url = urlList[l]; 
      if(document.URL.indexOf(url) !== -1) { 

或“正常化”这一点与正则表达式第一。这剥离了http://和/或www看看网址是否都启动相同:

var re = /https?:\/\/(www.)?/; 
    for(var l=0;l<urlList.length;l++) { 
      var url = urlList[l]; 
      if(document.URL.replace(re, '').indexOf(url.replace(re, '')) === 0) { 
+0

非常感谢,两个非常优雅的解决方案。 出于好奇:任何机会,我的想法可以与一些修补程序一起工作? 我检查http://regexr.com/和/\?.*/应该是正确的。为什么没有按照我尝试使用它的方式工作? – 2014-10-08 01:49:12

+1

你不能在正则表达式中使用相等的== ==运算符。 '=='从字面上比较字符串。您必须使用其中一种正则表达式方法,如'test'或'exec'或其中一种字符串方法,例如'match'。 – 2014-10-08 02:31:40

相关问题