2014-10-08 32 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

相關問題