Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Capture value out of query string with regex?

I am trying to select just what comes after name= and before the & in :

"/pages/new?name=J&return_url=/page/new" 

So far I have..

^name=(.*?). 

I am trying to return in this case, just the J, but its dynamic so it could very several characters, letters, or numbers.

The end case situation would be allowing myself to do a replace statement on this dynamic variable found by regex.

like image 440
Trip Avatar asked Apr 12 '12 15:04

Trip


1 Answers

/name=([^&]*)/

  • remove the ^ and end with an &

Example:

var str     = "/pages/new?name=J&return_url=/page/new"; var matches = str.match(/name=([^&]*)/); alert(matches[1]); 

The better way is to break all the params down (Example using current address):

function getParams (str) {    var queryString = str || window.location.search || '';    var keyValPairs = [];    var params      = {};    queryString     = queryString.replace(/.*?\?/,"");     if (queryString.length)    {       keyValPairs = queryString.split('&');       for (pairNum in keyValPairs)       {          var key = keyValPairs[pairNum].split('=')[0];          if (!key.length) continue;          if (typeof params[key] === 'undefined')          params[key] = [];          params[key].push(keyValPairs[pairNum].split('=')[1]);       }    }    return params; }   var url    = "/pages/new?name=L&return_url=/page/new"; var params = getParams(url); params['name']; 

Update

Though still not supported in any version of IE, URLSearchParams provides a native way of retrieving values for other browsers.

like image 58
vol7ron Avatar answered Sep 23 '22 04:09

vol7ron