2016-11-20 4 views
-1

У меня есть массив строк; они являются URL-адресами. Я хотел бы получить конкретный номер из каждого URL-адреса.grab number from array of string - regex - javascript

Эти адреса в этом формате:

"http://display.companyX.com/rest/banner?l_id=A000-0000-0000000-000000-111111-0-0-0&k=A77K_fakfhaskfhkjshfkjo=kafkjafk" 

Я хотел бы, чтобы захватить пятую цифру кода после banner?l_id, который 111111. Имейте в виду, что пятый цифровой код, а другой может быть любым случайным числом, это не всегда нули или единицы.

Массив образцов:

["http://display.companyX.com/rest/banner?l_id=A000-0000-0000000-000000-111111-0-0-0&k=A77K_fakfhaskfhkjshfkjo=kafkjafk", 
"http://display.companyX.com/rest/banner?l_id=A000-0000-0000000-000000-111111-0-0-0&k=A77K_fakfhaskfhkjshfkjo=kafkjafk", 
"http://display.companyX.com/rest/banner?l_id=A000-0000-0000000-000000-111111-0-0-0&k=A77K_fakfhaskfhkjshfkjo=kafkjafk", 
"http://display.companyX.com/rest/banner?l_id=A000-0000-0000000-000000-111111-0-0-0&k=A77K_fakfhaskfhkjshfkjo=kafkjafk", 
"http://display.companyX.com/rest/banner?l_id=A000-0000-0000000-000000-111111-0-0-0&k=A77K_fakfhaskfhkjshfkjo=kafkjafk" 
] 

Как я уже сказал, у меня есть массив строк URL-адресов и пытается понять его, как захватить пятый цифровой код с помощью Javascript; regex может помочь мне достичь этого, но я не знаком с regex.

Мне сказали, что python может быть проще решить это, но я создаю хром ext. который использует JS.

Спасибо за вашу помощь заранее!

+1

Вы пробовали что-нибудь еще? См. Http://stackoverflow.com/questions/10889391/regex-get-numbers-after-certain-character-string –

+1

'/ \/banner \? L_id = (?: \ W + -) {4} (\ w +)/'и захватить захваченную группу # 1 – anubhava

+0

@anubhava это сработало, спасибо! Я все еще изучаю регулярное выражение, и я узнал несколько кодов регулярных выражений, но я не уверен, что он делает после 'l_id'. Вы не возражаете, объясняя, что стоит за этим набором кода? Еще раз спасибо за вашу помощь – medev21

ответ

2

Вы могли бы сделать это без Regex с просто разделить() прикован с apropriate выбора индекса:

var addresses = ["http://display.companyX.com/rest/banner?l_id=A000-0000-0000000-000000-111111-0-0-0&k=A77K_fakfhaskfhkjshfkjo=kafkjafk", 
 
"http://display.companyX.com/rest/banner?l_id=A000-0000-0000000-000000-111111-0-0-0&k=A77K_fakfhaskfhkjshfkjo=kafkjafk", 
 
"http://display.companyX.com/rest/banner?l_id=A000-0000-0000000-000000-111111-0-0-0&k=A77K_fakfhaskfhkjshfkjo=kafkjafk", 
 
"http://display.companyX.com/rest/banner?l_id=A000-0000-0000000-000000-111111-0-0-0&k=A77K_fakfhaskfhkjshfkjo=kafkjafk", 
 
"http://display.companyX.com/rest/banner?l_id=A000-0000-0000000-000000-111111-0-0-0&k=A77K_fakfhaskfhkjshfkjo=kafkjafk" 
 
]; 
 
var results = addresses.map(x => x.split("?")[1].split("&")[0].split("-")[4]) 
 
console.log(results);

+0

большое спасибо за помощь. У меня есть еще один вопрос для этого кода. Как я могу использовать этот код для захвата URL-адресов с помощью уникального пятого кода? Таким образом, в массиве адресов содержимое будет выглядеть как «... 111 ..», «... 111 ...», «... 222 ...», «... 222 ...» , ".... 333 ...", "... 333 ...". В конце я хотел бы иметь URL-адреса с уникальным пятым кодом «... 111 ...», «... 222 ...», «... 333 ...». – medev21

+0

вы должны опубликовать новый вопрос, потому что его трудно ответить в поле комментариев. Но решением будет фильтр ((x, i, arr) => arr.lastIndexOf (x) === i) –