разбирать URL с помощью JavaScript или jQuery - PullRequest
5 голосов
/ 20 октября 2011

Хорошо, допустим, у меня есть URL

example.com / hello / world / 20111020 (с косой чертой или без нее).То, что я хотел бы сделать, это удалить с URL домена example.com.а затем разбить привет мир 20111020 в массив.Но моя другая проблема.Иногда в URL нет / hello / world / 20111020 или просто / hello /, поэтому мне нужно сначала определить, есть ли что-то после example.com, если нет, то ничего не делать, поскольку очевидно, что работать здесь не с чем.Однако, если есть что-то для каждого / мне нужно добавить это в этот массив по порядку.Так что я могу работать с массивом [0] и знать, что это был привет.

Я пытался что-то пару дней назад, но столкнулся с проблемами с завершающими слешами, это продолжало нарушать сценарий, я, к сожалению, отказался от этой идеи.И сегодня я ищу свежие идеи.

Ответы [ 5 ]

16 голосов
/ 20 октября 2011

Это должно работать

var url = 'example.com/hello/world/20111020/';
//get rid of the trailing / before doing a simple split on /
var url_parts = url.replace(/\/\s*$/,'').split('/'); 
//since we do not need example.com
url_parts.shift(); 

Теперь url_parts будет указывать на массив ["hello", "world", "20111020"].

3 голосов
/ 20 октября 2011

Вы можете использовать плагин jQuery-URL-Parser :

var file = $.url.attr("file"); 

В вашем случае вы, вероятно, захотите использовать segment():

var segments = $.url('http://allmarkedup.com/folder/dir/example/index.html').segment(); 

// segments = ['folder','dir','example','index.html']
2 голосов
/ 20 октября 2011
   <script type="text/javascript">
    function splitThePath(incomingUrl){
     var url = document.createElement("a");
     url.href = incomingUrl;
    //url.hash  Returns the anchor portion of a URL
    //url.host  Returns the hostname and port of a URL
    //url.hostname  Returns the hostname of a URL
    //url.href  Returns the entire URL
    //url.pathname  Returns the path name of a URL
    //url.port  Returns the port number the server uses for a URL
    //url.protocol  Returns the protocol of a URL
    //url.search    Returns the query portion of a URL
    if(url.pathname && url.pathname != ""){
   var pathnameArray = url.pathname.split("/");
 }else{

}


}
</script>
0 голосов
/ 30 ноября 2015

Для разбора URL-адресов одним из подходов может быть использование привязанного объекта DOM.

var a = document.createElement("A");
a.href = 'http://example.com:8080/path/to/resources?param1=val1&params2=val2#named-anchor';

a.protocol; // http:
a.host; // example.com:8080
a.hostname; //example.com
a.port; // 8080 (in case of port 80 empty string returns)
a.pathname; // /path/to/resources
a.hash; // #named-anchor
a.search // ?param1=val1&params2=val2
0 голосов
/ 20 октября 2011

Я создал следующее регулярное выражение для URL

^https?://(((0|([1-9][0-9]{0,1}))(\.(0|([1-9][0-9]{0,1}))){3})|([a-zA-Z]([a-zA-Z0-9$\-_@\.&+!*"\'\(\),]|(%[0-9a-fA-F][0-9a-fA-F]))*(\.([a-zA-Z]([a-zA-Z0-9$\-_@\.&+!*"\'\(\),]|(%[0-9a-fA-F][0-9a-fA-F]))*))*))(/|((/([a-zA-Z]([a-zA-Z0-9$\-_@\.&+!*"\'\(\),]|(%[0-9a-fA-F][0-9a-fA-F]))*))*))$

Он был написан для MySql - я уверен, что, немного поиграв, вы сможете получить его, работая для своих нужд.

Кстати - я взял идею из RFC - Номер ускользает от меня в этот момент

...