Suppose we don't know how many slashes we could get in a string but we do not want any extra slashes. So if we get this string '/hello/world///////how/are/you//////////////' we should transform it to the form of '/hello/world/how/are/you/'. How to do it with the help of regular expressions in JavaScript?
"/hello/world///////how/are/you//////////////".replace(/\/+/g, "/")
Edited: mkoryak's answer below is way better. Leaving this in case the info it contains is useful for someone else.
You could capture each word + slash group and look ahead (but don't capture) for one or more extra slash. Like...
(\w+\/)(?:\/)*(\w+\/)(?:\/)*
First () captures one or more of any word character followed by a slash, second () looks for a slash but doesn't capture, * means find 0 or more of the proceeding token. Etc.
Hope that helps!
'/hello/world///////how/are/you//////////////'.replace(/\/{2,}/g, '/');
This might be an incy wincy bit faster than mkoryak's suggestion, for it will only replace where necessary – i.e., where there's multiple instances of /
. I'm sure someone with a better understanding of the nuts and bolts of the JavaScript regular expression engine can weigh in on this one.
UPDATE: I have now profiled mine and mkoryak's solutions using the above string but duplicated hundreds of times, and I can confirm that my solution consistently worked out several milliseconds faster.