2014-02-19 39 views
1

我需要檢查包含/ wp-content /的錨定路徑。正則表達式匹配包含的URL/wp-content/

例如,<a href="http://domain.com/wp-content/...">Link1</a>

在這種情況下,正則表達式必須在陣列

['http://domain.com', 'domain.com', 'http://domain.com/wp-content/', '']

在我的代碼以URL,返回字符串模式匹配我用這個,但我做錯了什麼

$('a').live('click', function(e) { 
    var host = thisClick.attr('href'), 
     pattern = /(?:https?:\/\/)?(?:www\.)?(.*?)?(\/wp-content\/)?\//, 
     matchReg = host.match(pattern); 
}); 

上線代碼有什麼問題?

回答

2

見,當你申請你的正則表達式會發生什麼:

  1. 第一個字符,<,不(?:https?:\/\/)?匹配h。繼續。
  2. 不中(?:www\.)?匹配w,在(.*?)?
  3. 移動確實匹配.只要量詞將繼續,因爲它不匹配//wp-content/
  4. 您與<a href="http:/結束匹配。

你不能讓所有東西都是可選的,或者沒有任何正則表達式可以工作到URL的開始。如果你想始終與在<a>標籤的東西,嘗試:

/href="(((?:https?:\/\/)?(?:www\.)?(.*?)?)\/wp-content\// 
  • 非可選/wp-content/,那是你的標準。
  • wp-content/一個
  • 首先,集團將抓住http://domain.com/wp-content/,第二http://domain.com後無需額外的斜槓,第三domain.com
  • 演示的樂趣在這裏:http://regex101.com/r/lF5qO7
+0

謝謝,羅賓擴展答案 現在一切都可以理解,上面的代碼可以正常工作。 –

相關問題