2015-06-08 84 views
-1

是否有一行JavaScript會返回從window.location.pathname下面突出顯示的URI的粗體部分?Javascript:正則表達式來獲取URI的特定部分

  • /競技場/
  • /EN/競技場 /(忽略了兩個字母的語言代碼 - 而不是一組列表)
  • /PT-BR/競技場 /(忽略四個字母郎連字符的代碼 - 而不是一組列表)
  • /EN/競技場 /房/(忽略URL的其他部分)

獎勵積分,在URI是/的情況下,我想它返回首頁

我想只接受一個單一的代碼行中的標籤管理器使用此返回功能,因此需要單線功能。

類似地,有一個額外的正則表達式表達式也可以返回上述的URI的語言代碼部分:PT-BR或匹配任一這兩個圖案的任何其它的語言代碼,並且該默認值返回en否則不存在?

+3

發表您嘗試..這些會用來作爲匹配語言 –

+4

正則表達式不能匹配不存在的部分。它不能「返回默認」。 – Amit

+1

'Arena'部分是否可以以小寫字母開頭?它可以是2個字符長嗎? '語言'部分可以以大寫字母開頭嗎? –

回答

0

使用非捕獲/可選正則表達式組查找語言代碼。捕獲第一組非/個字符。如果不匹配,則設置爲默認值Home值。

var regex = /^\/(?:[a-z]{2}(?:-[a-z]{2})?\/)?([^/]+)/, 
    matches = window.location.pathname.match(regex); 

var page = matches ? matches[1] : 'Home'; 
console.log(page); // Arena 

同樣,你可以選擇捕捉語言部分:

var regex = /^\/(?:([a-z]{2}(?:-[a-z]{2})?)\/)?([^/]+)/, 
    matches = window.location.pathname.match(regex); 

var language = matches ? matches[1] : 'en', 
    page = matches ? matches[2] : 'Home'; 

Demo

+0

完美!正是我在找什麼。謝謝! – Matt