2011-03-31 177 views
0

我有,我想捕獲所有的/分隔符之間單詞的URL字符串:用JavaScript正則表達式捕獲組

所以給出這個網址:

"/way/items/add_items/sell_items": 

我想捕捉:

way 
items 
sell_items 
add_items 

如果我不喜歡這樣寫道:

'/way/items/sell_items/add_items'.match(/(\w+)/g) 
=> [ 'way', 'items', 'sell_items', 'add_items' ] 

它會給我一個數組回來,但沒有捕獲組,爲什麼我這樣做,而不是:

new RegExp(/(\w+)/g).exec("/way/items/sell_items/add_items") 
=> [ 'way', 'way', index: 1, input: '/way/items/sell_items/add_items' ] 

但這隻能捕獲方式..我希望它捕獲所有四個字。

我該怎麼做?

感謝

+2

'/.../'已經是'RegExp'對象。你不需要調用構造函數。 – SLaks 2011-03-31 03:41:13

回答

9

你應該寫

var parts = url.split("/"); 

global標誌用於該replace方法。
此外,它使從最後結果exec方法開始(使用RegExplastIndex屬性)

+1

是的,但要注意,URL開頭的'/'結果是一個空的數組元素。 – ridgerunner 2011-03-31 06:46:55

3

如果通過某些原因正是一個正則表達式的需要,所以用這個,否則採用分體式()函數。

代碼:

var re = new RegExp(/\w+?(?=\/|$)/gi); // added |$ 
alert(re); 
var text = '/way/items/add_items/sell_items'; 
var aRes = text.match(re); 

結果: [方式,物品,add_items,sell_items];

+0

這是PHP,而問題與JavaScript有關。 – jensgram 2011-03-31 10:14:16

+0

@jensgram:謝謝!我改變了我的帖子。 Javascript支持先行操作,但不支持向後看。 – 2011-03-31 10:47:22

+0

'sell_items'怎麼樣? – jensgram 2011-03-31 10:54:34