Regex для извлечения частей URL? - PullRequest
0 голосов
/ 25 ноября 2010

У меня есть скрипт JavaScript, мне нужна помощь по изменению ...
Я хотел бы, чтобы части URL были извлечены и установлены как классы элемента html.

var loc = window.location.pathname.match(REGEX_CODE_GOES_HERE);
// document.documentElement is the html element, this adds the class
if(loc) document.documentElement.className += " " + loc[1].toLowerCase();

Трудная часть - это регулярное выражение; вот как это должно работать:

Пример URL:

http://www.somesite.com/Lists/Pages/ViewPage.aspx?ID=12

Должен возвращаться (как классы HTML-элемента, конечно):

lists pages viewpage aspx id 12

Не стесняйтесь редактировать код так, как вам удобно ...

Заранее спасибо!

Ответы [ 3 ]

3 голосов
/ 25 ноября 2010

что-то вроде

var split = window.location.pathname.split(/\/|\?|&|=|\./g);

или, если вы хотите, чтобы все в одной строке:

var classes = window.location.pathname.toLowerCase().replace(/\/|\?|&|=|\./g," ")

может делать то, что вы хотите

2 голосов
/ 25 ноября 2010
var matches = window.location.pathname.replace(/http:\/\/[^\/]+\//,'').match(/[\w\-\.!~\*\'"(),]+/g);

Регламент соответствует RFC 1738.

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

1 голос
/ 06 июля 2013
var match = url.match(/^(?:([^:/?#]+):)?(?:\/\/([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?/);
var protocol = match[1],
    domain   = match[2],
    path     = match[3],
    query    = match[4],
    fragment = match[5];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...