2014-11-10 2 views
0

У меня возникли некоторые проблемы при разборе одну часть следующего URL из:Попытка разобрать URL с помощью Regex [JavaScript]

http://port-80.********************************************.box.************.com/********/search/?sid=123875&brands=DELL|KROCKS&sort=popularity 

Я пытаюсь разобрать следующее: DELL | KROCKS.

До сих пор у меня есть следующее регулярное выражение, которое работает в определенной степени:

/brands=(.*)[\&?]/ 

Что выше делает, если & характер после того, как бренды, то получим следующее: DELL | KROCKS. Однако, если & не существует, он получит следующее: DELL | KROCKS & вид = популярность.

Есть ли способ исправить это?

+1

Почему бы просто не совместить '[^ &?] *' Вместо '(. *) [\ &?]'? –

+0

Как, если «& is not there», может ли он «получить следующее: DELL | KROCKS & sort = popular»? –

+0

Вы пытались использовать любые библиотеки разбора URL-адресов, чтобы разбить часть запроса на полезные части? –

ответ

1

Использовать общий парсер URL.

Как это: How to get the value from URL Parameter?

function getQueryParams(qs) { 
    qs = qs.split("+").join(" "); 

    var params = {}, tokens, 
     re = /[?&]?([^=]+)=([^&]*)/g; 

    while (tokens = re.exec(qs)) { 
     params[decodeURIComponent(tokens[1])] 
      = decodeURIComponent(tokens[2]); 
    } 

    return params; 
} 
var query = getQueryParams("http://port-80.********************************************.box.************.com/********/search/?sid=123875&brands=DELL|KROCKS&sort=popularity"); 
alert(query.brands); 
Смежные вопросы