regex – Javascript regular expression: remove first and last slash-ThrowExceptions

Exception or error:

I have these strings in javascript:


and I would like to remove the first and last slash if it’s exists.

I tried ^\/(.+)\/?$ but it doesn’t work.

Reading some post in stackoverflow I found that php has trim function and I could use his javascript translation ( but I would prefer a “simple” regular expression.

How to solve:
return theString.replace(/^\/|\/$/g, '');

“Replace all (/.../g) leading slash (^\/) or (|) trailing slash (\/$) with an empty string.”


There’s no real reason to use a regex here, string functions will work fine:

var string = "/banking/bonifici/italia/";
if (string.charAt(0) == "/") string = string.substr(1);
if (string.charAt(string.length - 1) == "/") string = string.substr(0, string.length - 1);
// string => "banking/bonifici/italia"

See this in action on jsFiddle.



In case if using RegExp is not an option, or you have to handle corner cases while working with URLs (such as double/triple slashes or empty lines without complex replacements), or utilizing additional processing, here’s a less obvious, but more functional-style solution:

const urls = [

const trimmedUrls = => url.split('/').filter(x => x).join('/'));


In this snippet filter() function can implement more complex logic than just filtering empty strings (which is default behavior).

Word of warning – this is not as fast as other snippets here.


Just in case that someone needs a premature optimization here…

var path = '///foo/is/not/equal/to/bar///'
var count = path.length - 1
var index = 0

while (path.charCodeAt(index) === 47 && ++index);
while (path.charCodeAt(count) === 47 && --count);

path = path.slice(index, count + 1)

Leave a Reply

Your email address will not be published. Required fields are marked *