Javascript 如何使用regex解析Ajax/Jquery响应数据?

Javascript 如何使用regex解析Ajax/Jquery响应数据?,javascript,jquery,regex,ajax,Javascript,Jquery,Regex,Ajax,如果我在标题中使用了不正确的术语,我深表歉意。我不知道该怎么说 我正在使用Ajax进行GET调用,它将以html/txt/json等格式的数据作为响应,所有这些都包含在一个文件中。我试图只提取介于[{}]之间的内容 我已成功使用下面的正则表达式来实现这一点: 关于我的GET调用返回的此响应数据: Lots of random text, random html, etc. [{There is text in here hello world}] Lots of random text, ra

如果我在标题中使用了不正确的术语,我深表歉意。我不知道该怎么说

我正在使用Ajax进行GET调用,它将以html/txt/json等格式的数据作为响应,所有这些都包含在一个文件中。我试图只提取介于[{}]之间的内容

我已成功使用下面的正则表达式来实现这一点:

关于我的GET调用返回的此响应数据:

Lots of random text, random html, etc. 
[{There is text in here hello world}]
Lots of random text, random html, etc.  
如您所见,此正则表达式将正确提取以下内容:

[{There is text in here hello world}]
这太棒了!但我似乎不知道如何在得到响应后自动解析数据。我目前正在尝试:

$.ajax(settings).done(function (response) {
  console.log(response.replace(/(?=\[\{).*(\}\])/));
});
但这不起作用。我是不是完全错了?它只输出完整的GET响应,而不是regex数据。非常感谢您的帮助。

您可以尝试使用.indexOf查找{和}的索引:

var first_index=indexOf{

var second_index=indexOf}:

找到索引后,根据这些索引定义子字符串:

var parsed_string=response.substringfirst_index+1,second_index

您需要在第一个_索引变量中添加1,这样就不会在解析的_字符串变量中得到{


如果您的响应是一个字符串,那么您可以这样使用:

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

更健壮的方法是请求JSON中的数据,相应地解析它,然后使用它执行javascript操作:

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

如果您的回答是字符串,那么可能会很有用。@Geshode这正是我需要的。Sub作为回答,我会批准它。谢谢!很高兴,我能帮上忙。我写了一个简短的回答。
var obj = JSON.parse(response);
// do js stuff with obj