admin管理员组

文章数量:1303427

How do i get first and second slash of a URL in javascript?

URL : http://localhost:8089/submodule/module/home.html

Now i want the value /submodule/module

Below is the code i have been trying

window.location.pathname.substring(0, window.location.pathname.indexOf("/",2))

This got me only /submodule

window.location.pathname.substring(0, window.location.pathname.lastIndexOf("/",window.location.pathname.lastIndexOf("/")-1))

Also this didnt work. Can anyone please guide where i am going wrong.

How do i get first and second slash of a URL in javascript?

URL : http://localhost:8089/submodule/module/home.html

Now i want the value /submodule/module

Below is the code i have been trying

window.location.pathname.substring(0, window.location.pathname.indexOf("/",2))

This got me only /submodule

window.location.pathname.substring(0, window.location.pathname.lastIndexOf("/",window.location.pathname.lastIndexOf("/")-1))

Also this didnt work. Can anyone please guide where i am going wrong.

Share Improve this question asked Mar 2, 2018 at 15:35 sTgsTg 4,43418 gold badges73 silver badges125 bronze badges 1
  • 1 indexOf('/', 2) does not mean "find the second slash": developer.mozilla/en-US/docs/Web/JavaScript/Reference/… – Bergi Commented Mar 2, 2018 at 15:39
Add a ment  | 

6 Answers 6

Reset to default 5

This should work, it take everything exept the last element of pathname:

let result = window.location.pathname.split('/').slice(0,-1).join('/') + '/'

Only the 1st and 2de item:

let result = window.location.pathname.split('/').slice(0,2).join('/') + '/'

Handle path without file :

 // ex: /foo/bar/path.html > foo/bar/
 // ex: /foo/bar/ > foo/bar/

 let result = (window.location.pathname[window.location.pathname.length -1] !== '/') ? window.location.pathname.split('/').slice(0,-1).join('/') + '/' : window.location.pathname

You can use the split() function, for example like this:

var url = 'http://localhost:8089/submodule/module/home.html';
var parts = url.split('/');

console.log('/' + parts[3] + '/' + parts[4]);

The output will be:

/submodule/module

Try this:

var pathParts = window.location.pathname.split('/');

var result = `${pathParts[1]}/${pathParths[2]}`; 

Using a regular expression:

var url = 'http://localhost:8089/submodule/module/home.html'; //or window.location.pathname
var re = /\/\/.+(\/.+\/.+)\/.+/
re.exec(url)[1];

This expression basically says the url is in the format

//[anything](/submodule/module)/[anything]

and to get everything in parentheses.

Functional style /\/[^/]*\/[^/]*/.exec(window.location.pathname)[0]

You could use a regular expression:

var url = ...
var part = url.match(/https?:\/\/.*?(\/.*?\/.*?)\/.*/)[1]

Explanation:

http          Match the group 'http'
s?            Match 1 or 0 's'
:             Match a semicolon
\/\/          Match '//'
.*?           Match anything (non-greedy)
(             Start capturing block (Everything captured will be an array element)
\/*?\/.*?     Something that looks like /.../...
)             End capturing block
\/.*          Something that looks like /...

The output of the match method will be an array with 2 elements. The first one is the whole matched string, and the second is the captured group.

本文标签: JavascriptGet value of first and second slashStack Overflow