使用javascript正则表达式捕获组

时间:2011-03-31 03:36:35

标签: javascript regex

我有一个url字符串,我想从中捕获/ delimiter之间的所有单词:

所以给出了这个网址:

"/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 个答案:

答案 0 :(得分:9)

你应该写

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

global标志用于replace方法 此外,它使exec方法从最后一个结果开始(使用RegExp的{​​{1}}属性)

答案 1 :(得分:3)

如果由于某种原因需要一个正确的Regex,那么使用它,否则使用split()函数。

<强>代码:

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];