2016-11-03 74 views
1

我有可能URL路徑如下JavaScript的正則表達式匹配的URL路徑

/articles 
/payment 
/about 
/articles?page=1 
/articles/hello-world 

我想只匹配網址的主要道路,預計比賽:['articles', 'payment', 'about', 'articles', 'articles']

所以,我試圖構建JavaScript的RegEx,並想出了作爲最接近我可以[a-z].*(?=\/|\?),不幸的是它僅匹配裏面的最後兩個

串請指導 謝謝大家

+0

爲什麼_these_路徑是否有效?會有其他途徑是有效的嗎?你不能通過白名單和字符串嗎? – vlaz

+0

我打算用'然後window.location.pathname'從FULLPATH只提取主路徑 – Artisan

+0

這些路徑是我的網站 – Artisan

回答

0

https://regex101.com/r/A86hYz/1

/^\/([^?\/]+)/ 

此正則表達式捕獲第一/和任一第二/或第一之間的所有內容?如果它們存在。這看起來像你想要的模式。如果不是,請告訴我,我會根據需要進行調整。一些簡單的調整將捕獲每個/之間的內容以及捕獲查詢參數。

供將來參考寫正則表達式時,儘量避免超前/落後,除非你有,因爲他們通常引入錯誤。如果你堅持使用常規操作員,這是最簡單的。

要訪問比賽,這樣使用正則表達式:

var someString = '/articles?page=1'; 
var extracted = someString.match(/^\/([^?\/]+)/)[1] 

或者更一般

function getMainPath(str) { 
    const regex = /^\/([^?\/]+)/; 
    return str.match(regex)[1]; 
} 
+0

的所有可能性,這正是我想怎麼的,也感謝警告不要使用超前/落後:) – Artisan