cpeele00 cpeele00 - 2 months ago 14
jQuery Question

Remove querystring parameters from url with regex

I'm pretty new to regex and need to remove some content from our url

http://mysite.blah/problem/smtp/smtp-open-relay?page=prob_detail&showlogin=1&action=smtp:134.184.90.18


I need to remove everything from the "?" and on, leaving me just:

http://mysite.blah/problem/smtp/smtp-open-relay


Here is our current regex expression we are using to grab the route data. For example I can grab "smtp" and "smtp-open-relay" (which we need). However sometimes our url changes depending on where the user is coming from thereby appending the querystring parameters which is causing our current regex expression to blow up.

// Retrieve the route data from the route
var routeData = /([0-9a-zA-Z_.-]+)\/([0-9a-zA-Z_.-]+)$/g.exec(route);


I need it to ignore stuff from the "?" on.

Answer Source

A regular expression is probably more than you need.

You could do the following to remove the ? and everything (query string + hash) after it:

var routeData = route.split("?")[0];

If you truly wanted to strip only the query string, you could preserve the hash by reconstructing the URL from the window.location object:

var routeData = window.location.origin + window.location.pathname + window.location.hash;

If you want the query string, you can read it with window.location.search.