賞金將在 7 天后到期。此問題的答案有資格獲得 50聲望賞金。 Dyin想要獎勵一個現有的答案。
我的正則運算式冒險的目標是為一種機制創建一個匹配器,該機制可以向 URL 添加尾部斜杠,即使存在由URL 表示#或?在 URL 末尾表示的引數。
對于以下任何 URL,我正在尋找以下匹配項segment:
https://example.com/what-not/segment火柴segmenthttps://example.com/what-not/segment?a=b火柴segmenthttps://example.com/what-not/segment#a火柴segment
如果有匹配項,segment,我將用segment/.
對于以下任何 URL,不應存在匹配項:
https://example.com/what-not/segment/不匹配https://example.com/what-not/segment/?a=b不匹配https://example.com/what-not/segment/#a不匹配
因為在這里,已經有一個斜線。
我試過了:
- 這個原始的正則運算式及其變體:
.*\/([^?#\/] ). 但是,使用這種方法,當已經有斜杠時,我無法使其不匹配。 - 我嘗試了如下負前瞻
([^\/\#\?] )(?!(.*[\#\?].*))$:在這種情況下,我無法正確擺脫任何?或#部分。
謝謝你的熱心幫助!
uj5u.com熱心網友回復:
Lookahead 和lookbehind 條件非常強大!
(?<=\/)[\w] (?(?=[\?\#])|$)
Ps:我剛剛添加了[\w] 那個意思[a-zA-Z0-9_] 。
當然,URL 可以包含許多其他字符,例如-or~但對于提供的示例,它可以很好地作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/510612.html
標籤:正则表达式网址小路
上一篇:查詢引數分隔符在Java和Javascript中的分號不同
下一篇:encodeURLParameter、encodeURLPath和encodeURLQueryComponent的區別?
