2016-03-11 74 views
1

我有一個字符串:正則表達式組斜線

/1/2/3/anystring as follows here even forward slashes/////

我怎樣才能捕獲基團

(1) (2) (3) (anystring as follows here even forward slashes/////)

或有條件如果(2)或(3)不能捕捉然後捕獲一(1)或(1)/(2)或(1)(2)(3)或所有

我試圖

^/(.*)/(.*)/(.*)/(.*)

,但它並沒有捕捉/1/2//1//1/2/3/

+2

而不是'',嘗試'' – Diryboy

回答

1

var str = "/1/2/3/anystring as follows here even forward slashes/////"; 
 
str.replace(/\/(([\w\s]|\/+$)+)/g,"($1)");

+0

感謝這部作品:) –

1

更改貪婪量詞.*爲 「(1)(2)(3)(如下所示甚至正斜槓///// anystring)」 不願意量詞.*?

^/(.*?)/(.*?)/(.*?)/(.*) 

live demo

+0

感謝但當我嘗試匹配'/ 1/2/3/anystring /(*)(*?) //',我沒有捕獲'anystring ///'我用'/ 1/anystring ///'工作,但是我只捕獲了'/ 1/anystring //'丟掉了我認爲的那個''/' –

+0

你的問題只被要求捕獲「1」,「2」和「3」。它現在捕獲其餘的 – Bohemian

1

嘗試此

^(?:/(.*?))?(?:/(.*?))?(?:/(.*?)/).*///// 

只需使用量詞?其代表數量爲0或1和非貪婪量詞*?執行非貪婪匹配。

參見:DEMO

+0

謝謝,但它不捕獲'/ 1/anystring ///' –

+0

它捕獲。你有沒有檢查我的演示? – fronthem

+0

請說清楚你的字符串尾部有多少斜線? – fronthem