2013-02-05 74 views
0

我的正則表達式並不好,我在這裏掙扎。我需要正則表達式從這些2種格式拿到冠軍:友好的博客網址Isapi Rewrite Regex

http://domain.com/blog/title 
http://secure.com/domainkey/blog/title 

,但不能匹配任何東西,從(其中子文件夾中可能有多個):

http://domain.com/images/blog/imagename 
http://domain.com/images/subfolders/blog/imagename 
http://secure.com/domain/images/blog/imagename 
http://secure.com/domain/images/subfolders/blog/imagename 

任何想法?謝謝。

+1

大概得到整個isapi重寫2規則集,這會比嚴格的一些正則表達式更好。 – TOMNM

+0

我已經開始於 'RewriteRule ^/blog /(.*)/ content \?friendly_name = $ 1 [I,L] RewriteRule^/(。*)/ blog /(.*)/ content \?friendly_name = $ 2 [I,L]' 但是,當然,我得到http://domain.com/images/sub/blog/this.png返回一個匹配。 – TOMNM

+0

基本上,我猜如果它在「/ images」或「/ files」之後,忽略「/ blog」。 – TOMNM

回答

1
(http:\/\/(?:(?:secure.com\/domainkey)|(?:domain.com))\/blog\/)([\w-]+) 

捕獲兩個部分:

  1. 基本URL,http://domain.com/blog/http://secure.com/domainkey/blog/
  2. 標題

演示與JS:

var regex = /(http:\/\/(?:(?:secure.com\/domainkey)|(?:domain.com))\/blog\/)([\w-]+)/ig; 

regex.exec('http://domain.com/blog/blog-title'); 
// results: ["http://domain.com/blog/blog-title", "http://domain.com/blog/", "blog-title"] 

regex.exec('http://secure.com/domainkey/blog/blog-title') 
// results: ["http://secure.com/domainkey/blog/blog-title", "http://secure.com/domainkey/blog/", "blog-title"] 

假設博客ŧ itle只包含[a-zA-Z_-],如果你有更多的字符需要捕捉,請修改正則表達式的最後部分。