2011-11-29 165 views
0

我有這個網址...JavaScript網址正則表達式來檢查正則表達式與URL

http://www.google.com/local/add/analytics?hl=en-US&gl=US 

我要檢查這些URL,看他們是否上面URL匹配...

www.google.com/local/add* 
www.google.com/local/add/* 
http://www.google.com/local/add* 
http://www.google.com/local/add/* 
https://www.google.com/local/add* 
https://www.google.com/local/add/* 

你可以看到輸入的URL也是一個正則表達式*,所以我可以用一個正則表達式來匹配URL列表,看看這個URL是否存在?目前我正在這樣做...

var isAllowed = (url.indexOf(newURL) === 0); 

這絕對沒有效率。

+1

你的問題並不完全清楚。 asterix(*)的用途是什麼?它是否意味着非正則表達式的通配符? – Variant

+0

@Variant我會認爲*是通配符是的,並且OP想驗證這些'案件'的網址。 – rlemon

回答

1

這不是我寫過最乾淨的正則表達式,但我認爲它應該工作。

var url = "http://www.google.com/local/add/analytics?hl=en-US&gl=US"; 
var reg = /((https|http|)(\:\/\/|)www\.google.com\/local\/add(\/|)).*/; 
console.log(reg.test(url)); 

這將對於所有這些情況

www.google.com/local/add*
www.google.com/local/add/*返回true
http://www.google.com/local/add *
http://www.google.com/local/add/ *
https://www.google.com/local/add *
https://www.google.com/local/add/ *

應該尋找(httphttps或沒有),那麼(://或沒有),那麼www.google.com/local/add然後(/或沒有),那麼任何事情。

的一個情況下,它也將返回true,我將離開你是(http|https)www.google.com/local/add(/|)*

+0

如果你打算使用它,我確實懇求你測試這個廢話。可能在正則表達式上多讀一點,並改進它(我不是正則表達式掌握自己...其實我大麥刮:P) – rlemon

0

據我理解你,你想是這樣的:

將輸入URL的正則表達式。例如:

var input = "http://www.google.com/local/add*"; 
var reg_url = input .replace(/\*/g,".*").replace(/\./g,"\\."); 

您可能需要逃避一些字符,請參閱here

並檢查是否匹配:

var url = "http://www.google.com/local/add/analytics?hl=en-US&gl=US"; 
var isAllowed = url.search(reg_url) >= 0; 
1
var reg = new RegExp("(https?://)?(www.)?google.com/local/add/?"), 
    URL = "http://www.google.com/local/add/analytics?hl=en-US&gl=US"; 

console.log(reg.test(URL)); 

我用?了很多,這意味着的情況下,任何字符前面的問號可能會或可能不匹配。

https?s可以或不可以在那裏。 (www.)?意味着www.可能完全不存在。你希望得到它現在的工作方式。

Demo

Learn how to use Regular Expressions

+0

ahhh。看到我不知道'?'。好秀,好秀。 – rlemon