5

How can I parse this string on a javascript,

var string = "http://www.facebook.com/photo.php?fbid=322916384419110&set=a.265956512115091.68575.100001022542275&type=1";

I just want to get the "265956512115091" on the string. I somehow parse this string but, still not enough to get what I wanted.

my code:

var newstring = string.match(/set=[^ ]+/)[0]; 

returns:

a.265956512115091.68575.100001022542275&type=1
Robin Carlo Catacutan
  • 13,249
  • 11
  • 52
  • 85
  • To properly parse this, you should first dissect it into its parts (e,g, the key-values of the query string), then URL-decode the key and value, and only then extract the data you're interested in from the value with the key you're interested in. – Lucero Jan 28 '12 at 13:40

3 Answers3

5
try this : 

  var g=string.match(/set=[a-z]\.([^.]+)/);

g[1] will have the value

http://jsbin.com/anuhog/edit#source

Royi Namir
  • 144,742
  • 138
  • 468
  • 792
3

You could use split() to modify your code like this:

var newstring = string.match(/set=[^ ]+/)[0].split(".")[1]; 

For a more generic approach to parsing query strings see:

Parse query string in JavaScript

Using the example illustrated there, you would do the following:

var newstring = getQueryVariable("set").split(".")[1];

Community
  • 1
  • 1
biscuit314
  • 2,384
  • 2
  • 21
  • 29
  • My first instinct was to modify the regex too, but I thought the more general notion of parsing a query string was helpful. Braveyard's answer answer (linked above) is based on split() and I just carried forward in kind. – biscuit314 Jan 28 '12 at 13:39
  • If you want something generic, then by all means do apply proper URL decoding! – Lucero Jan 28 '12 at 13:54
0

You can use capturing group in the regex.

const str = 'http://www.facebook.com/photo.php?fbid=322916384419110&set=a.265956512115091.68575.100001022542275&type=1';

console.log(/&set=(.*)&/.exec(str)[1]);
Ian
  • 1,198
  • 1
  • 5
  • 15