如何通过字符串搜索只获取JS的特定部分?

时间:2015-07-28 13:26:14

标签: javascript jquery

我只想搜索字符串的特定部分,只使用JS或Jquery显示它。

例如,(它看起来像JSON,但它不是,它只是括号中的一些东西;)):

var t = 't';
var four = '4';
eval('var ' + (t + four) + ' = "some value";');
console.log(t4);

// returns "some value" to the console

我只想提取身份证号码:

下面的“代码”不是一种语言,它只是帮助理解我想在JS / jQuery上做什么的一个例子

  

var IDs = [searchThrough] data [where where]“id”:[getContent] after:and before,or} alert(“IDs:”+ IDs);

它允许我:

1 - 在var data = [{"name":"node1","id":1,"is_open":true,"children": [ {"name":"child2","id":3}, {"name":"child1","id":2} ] }]; 上的字符串find "id":设置我想要的参数。

2 - 设置获取内容data

的开始和结束

我该怎么做?

提前致谢。

“把我当作Scotty!”

3 个答案:

答案 0 :(得分:1)

如果我理解你,你想搜索代表数据的String。在这种情况下,您可以使用如下的正则表达式:

var matcher = /"id":([^,\}]*/g, // capture all characters between "id" and , or }
    match, IDs = [];

while (match = matcher.exec(data)) {
  IDs.push(match[1]);
}

alert(IDs);

答案 1 :(得分:1)

我不是正则表达的大师,但这是我的尝试。

var data = '[{"name":"node1","id":1,"is_open":true,"children":[{"name":"child2","id":3},{"name":"child1","id":2}]}]';
var arrays=[];
var t1=data.match(/"id":[0-9]+(,|})*/g);
for(var x=0;x<t1.length;x++)
{
  arrays.push(t1[x].match(/\d+/));   

}
alert(arrays);

答案 2 :(得分:1)

如果我们假设您正在处理字符串,我们可以使用正则表达式提取数据:

var str = '[{"name":"node1","id":1,"is_open":true,"children":\n   [\n     {"name":"child2","id":3},\n     {"name":"child1","id":2}\n   ]\n }];';
var regex = /"id":([0-9]*)/g;
var match = regex.exec(str);

var res = new Array();

while (match != null) {
  res.push(match[1]);
  match = regex.exec(str);
}

var ids = res.join();

alert("IDs: " + ids);

此演示将为您提供一个警告框,其内容为“ID:1,3,2”