RegEx用于在Json String中获取值

时间:2016-04-02 08:49:37

标签: javascript regex

var string = "[{"name":"person1", "city": "city1"},
               {"name":"person2", "city":"city1"},
               {"name":"person3", "city": "city1"}]"

如何使用正则表达式获取字符串var的值?

result => ["person1", "person2", "person3"]

4 个答案:

答案 0 :(得分:1)

将您的初始字符串更改为有效的JSON表示法。
然后,您可以使用JSON.parseArray.map函数轻松获取一系列人员:

var string = '[{"name":"person1", "city": "city1"},{"name":"person2", "city":"city1"},{"name":"person3", "city": "city1"}]';

var persons = JSON.parse(string).map(function(v){ return v['name']; });
console.log(persons);  // ["person1", "person2", "person3"]

答案 1 :(得分:0)

你可能甚至不需要RegEx。你可以使用下面的代码。

var objects = JSON.parse(string); //Parse your string to JS object
var result = [];
objects.forEach(function(item,index,arr) //Iterate add to result array
{
   result.push(item.name); 
});

答案 2 :(得分:0)

您可以使用 JSON.parse 然后地图来获取名称:

var obj = JSON.parse(string);
var names = obj.map(function(o) {
    return o.name;
});

https://jsfiddle.net/xrzeg7h2/

答案 3 :(得分:0)

RegEx用于在Json String中获取值

我必须为此演示制作变量字符串valid string。这里的代码可以帮助您获得理想的结果。

正则表达式使用:/{"name":"(.*?)"/g与捕获组(.*?)仅提取所需数据。



function getMatches(string, regex, index) {
  index || (index = 1); // default to the first capturing group
  var matches = [];
  var match;
  while (match = regex.exec(string)) {
    matches.push(match[index]);
  }
  return matches;
}


var string = '[{"name":"person1", "city": "city1"},{"name":"person2", "city":"city1"},{"name":"person3", "city": "city1"}]';

var matches = getMatches(string, /{"name":"(.*?)"/g, 1);

// Log results
document.write(JSON.stringify(matches))