Jason Waltz
Jason Waltz

Reputation: 435

How do you parse Ajax/Jquery response data using regex?

my apologies if I used incorrect terms in my title. I am not sure how else to put this.

I am using Ajax to make a GET call and it responds with data in the form of html/txt/json etc. all in one file. I am trying to extract only whats in between [{ }].

I have successfully used the regex below to achieve this using https://regexr.com:

(?=\[\{).*(\}\])

On this response data returned by my GET call:

Lots of random text, random html, etc. 
[{There is text in here hello world}]
Lots of random text, random html, etc.  

As you can see this regex will properly extract this:

[{There is text in here hello world}]

This works great! But I just can't seem to figure out how to automatically parse the data after I get the response. I am currently trying:

$.ajax(settings).done(function (response) {
  console.log(response.replace(/(?=\[\{).*(\}\])/));
});

But this isn't working. Am I going at this completely wrong? It's only outputting the full GET response and not the regex data. Any help is greatly appreciated.

Upvotes: 0

Views: 683

Answers (3)

lucas
lucas

Reputation: 1505

The more robust method would be to request the data in JSON, parse it accordingly then do javascript stuff with it:

var obj = JSON.parse(response);
// do js stuff with obj

Upvotes: 0

mysteriou5tranger
mysteriou5tranger

Reputation: 1

You could try using the .indexOf() to find the indices of { and }:

var first_index = indexOf("{");

var second_index = indexOf("}"):

Once you find the indices, define a substring based on these indices:

var parsed_string = response.substring(first_index + 1, second_index);

You will need to add 1 to the first_index variable so that you do not get the "{" in the parsed_string variable.

jsfiddle

Upvotes: 0

Geshode
Geshode

Reputation: 3764

If your response is a string, then you could use string.match() like this:

$.ajax(settings).done(function (response) {
  console.log(response.match(/(?=\[\{).*(\}\])/));
});

Upvotes: 1

Related Questions