Reputation: 435
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
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
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.
Upvotes: 0
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