TL; DR
只要你總有你想要一個/d/
和/edit
之間得到的字符串,你可以用這個正則表達式捕捉到它:(.*\/d\/)(.*)(\/edit.*)
;它應該是第二組。
下面是你如何能得到它的一個例證:
var data = "/presentation/d/1JHjE6pWJRujtMQaXcL92HBD8ZKq35au8moEv_zP2D_-0/edit";
my_preferred_string = data.match(/(.*\/d\/)(.*)(\/edit.*)/)[2];
console.log(my_preferred_string);
解釋正則表達式,/(.*\/d\/)(.*)(\/edit.*)/g
:
在這裏,我們有三組;這些組被限制在括號內,如:(the group elements)
,其中組元素代表期望的匹配。
第一組被捕獲(.*\/d\/)
。
在該組的表達式中,.*
用於捕獲除行終止符以外的任何字符。在同一部分,我們已經使用量詞*
來進行零次和無限次匹配,儘可能多次。然後,\/
作爲匹配的/
字符(大小寫敏感的),其中,前述\
是轉義,後面跟有字母d
(區分大小寫,以特異性d作爲一個字符匹配)時,並用\/
結束,只是如之前的d
。
第二組是我們感興趣的實際部分,用(.*)
捕獲,其中.*
正如上面在捕獲前面的表達式時所解釋的那樣。
的第三組被捕獲與(\/edit.*)
,其中\/
和.*
同等地與上述(第1組)中說明,並且edit
作爲字符匹配編輯(區分大小寫)。
最後,g
是一個標誌(全局模式標誌)。它幫助我們獲得所有比賽,並且在我們得到我們的正則表達式的第一場比賽後不會返回。
爲什麼不只是搜索確切的字符串?我想象會更容易 –