2014-11-02 3 views
1

Например, если у меня есть URL-адреса, например url = ['aaa.com/subject/12345', 'aaa.com/book/45678']. Я хочу получить "subject" и "ebook" и номер из него.Как получить регулярное выражение JavaScript без запроса?

Если я использую url[i].match(/\/(\w)*\//), он будет возвращать ["/subject/", "t"] и ["/book/", "k"] для i равна 0 и 1.

Конечно, я могу использовать slice(1, -1), чтобы получить "subject" и "book".

Но Можно ли использовать регулярное выражение только для получения "subject" вместо "/subject/"?

ответ

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

Вам нужно разместить квантор в захватывающих скобок:

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

, который даст вам ["/subject/", "subject"] и ["/book/", "book"].

Первый элемент списка совпадений всегда содержит весь матч.

Если вы повторите захват группы, только последнее совпадение повторения будет сохранено в обратной ссылке группы.

Смежные вопросы