例如,如果我有url = ['aaa.com/subject/12345', 'aaa.com/book/45678']
这样的网址。我希望获得"subject"
和"ebook"
以及其中的数字。
如果我使用url[i].match(/\/(\w)*\//)
,它会返回["/subject/", "t"]
和["/book/", "k"]
,i
等于0
和1
。
当然,我可以使用slice(1, -1)
获取"subject"
和"book"
。
但是否可以仅使用正则表达式来获取"subject"
而不是"/subject/"
?
答案 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"]
。
匹配列表的第一个元素始终包含整个匹配。
如果您重复捕获组本身,则只有最后一次重复的匹配将存储在组的反向引用中。