如何在没有查询部分的情况下获得JavaScript正则表达式?

时间:2014-11-02 06:41:00

标签: javascript regex

例如,如果我有url = ['aaa.com/subject/12345', 'aaa.com/book/45678']这样的网址。我希望获得"subject""ebook"以及其中的数字。

如果我使用url[i].match(/\/(\w)*\//),它会返回["/subject/", "t"]["/book/", "k"]i等于01

当然,我可以使用slice(1, -1)获取"subject""book"

是否可以仅使用正则表达式来获取"subject"而不是"/subject/"

2 个答案:

答案 0 :(得分:3)

您可以使用:

var url = ['aaa.com/subject/12345', 'aaa.com/book/45678'];
var m = url[0].match(/\/(\w+)\/(\d+)$/);
//=> ["/subject/12345", "subject", "12345"]

现在,您可以使用m[1]获取subject并使用m[2]获取后面的数字。

答案 1 :(得分:1)

您需要将量词放在捕获括号内:

url[i].match(/\/(\w*)\//)

将为您提供["/subject/", "subject"]["/book/", "book"]

匹配列表的第一个元素始终包含整个匹配。

如果您重复捕获组本身,则只有最后一次重复的匹配将存储在组的反向引用中。