RegEx 用于在 Json 字符串中获取值

RegEx for getting value inside Json String

本文关键字:获取 字符串 Json 用于 RegEx      更新时间:2023-12-04
var string = "[{"name":"person1", "city": "city1"},
               {"name":"person2", "city":"city1"},
               {"name":"person3", "city": "city1"}]"

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

结果 => ["person1", "person2", "person3"]

RegEx 用于在 Json 字符串中获取值

我必须使您的变量字符串成为此演示的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))

将初始字符串更改为有效的 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"]

你可能甚至不需要正则表达式。您可以使用以下代码。

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); 
});

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

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

https://jsfiddle.net/xrzeg7h2/