user555
user555

Reputation: 1529

get the first parameter of a string using regular expression

function getParameterByName(name, str) {
            name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
            var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
            results = regex.exec(str);
            return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
        }

I'm using this algorithm for getting the value from the string, found it in internet

my string is

mihpayid=403993715510554486&mode=CC&status=success&unmappedstatus=captured&key=JBZaLc&txnid=t39SfgBZFEFLwhxEC&amount=1000.0&addedon=2014-12-06+17%3A34%3A26&productinfo=Devthon&firstname=sasi.kanth80%40gmail.c&lastname=&address1=&address2=&city=&state=&country=&zipcode=&email=sasi.kanth80%40gmail.com

I'm able to get all the parameters like status key

But I'm unable to get the mihpayid value which is the first parameter

How can I get that any suggestion?

getParameterByName("success", data);

Upvotes: 0

Views: 484

Answers (3)

John Babb
John Babb

Reputation: 951

I think your solution is really close, it's just missing a couple of things. One not sure if it is a typo or not but the line var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"); ends in a comma. Outside of this the only thing you needed to do is update the following [\\?&] to [\\?&]?

function getParameterByName(name, str) {
            name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
            var regex = new RegExp("[\\?&]?" + name + "=([^&#]*)");
            results = regex.exec(str);         
            return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
        }

data="mihpayid=403993715510554486&mode=CC&status=success&unmappedstatus=captured&key=JBZaLc&txnid=t39SfgBZFEFLwhxEC&amount=1000.0&addedon=2014-12-06+17%3A34%3A26&productinfo=Devthon&firstname=sasi.kanth80%40gmail.c&lastname=&address1=&address2=&city=&state=&country=&zipcode=&email=sasi.kanth80%40gmail.com";

console.clear();
console.log(getParameterByName("unmappedstatus", data));
console.log(getParameterByName("status", data));
console.log(getParameterByName("mihpayid", data));


Results in Console:
        regex:10 Console was cleared
        regex:11 captured
        regex:12 success
        regex:13 403993715510554486
        regex:1 undefined

Upvotes: 1

Eduardo Ramos
Eduardo Ramos

Reputation: 416

A regular expression like /([a-zA-Z0-9]*)=([^&]*)/ig will return all matches with the variable and value conveniently sorted.

Upvotes: 1

Amit Joki
Amit Joki

Reputation: 59232

You can make use of this function which will form a flattened array looking like

[key,value, anotherkey,anothervalue,...] so we could just find the value by adding one to the index of key.

function getParameterByName(name, str) {
   var arr = str.split('&').map(function(s){ 
      return s.split('=') 
   }).join().split(","); // flatten the array
   return decodeURIComponent(arr[arr.indexOf(name) + 1]);
}

Upvotes: 1

Related Questions