2016-06-07 24 views
0

这是我到目前为止的正则表达式,但它是选择键。我只是想选择值的所有实例:https://regex101.com/r/fA5cP9/1如何使用RegEx从JSON获取所有字符串值,而不是Keys?

{ 
    "contact": { 
     "name": "John Doe", 
     "label": "Web Developer", 
     "email": "[email protected]", 
     "phone": "(123) 123-1234", 
     "website": "www.example.com", 
     "profiles": [{ 
      "network": "LinkedIn", 
      "url": "www.linkedin.com" 
     }] 
    } 
} 
+0

为什么你想用正则表达式来解决这个问题? – Xufox

+0

有没有更好的方法?我需要制作一个所有值的单个数组? – user1869257

+0

此外,你有一个所有的值列表后,你实际上试图达到什么? JSON的目的已经是在逻辑结构中组织数据。为什么你会尝试提取列表中已经组织的值? – Xufox

回答

1

因为这不完全是一个现实世界中的问题来解决,它可能比较容易粘到正则表达式的方法。

你的正则表达式几乎是正确的,你只是忘了一件事:区分键和值的唯一事情就是两者之间的冒号。每个值都是,前面的以冒号分隔,因此您必须将RegEx更改为\:\s?\"(.*?)\"。即使冒号后有一个空格,\s?也能确保它有效。

现在你需要的字符串化JSON,然后替换,然后重新分析它:

var resume = { 
    "contact": { 
     "name": "John Doe", 
     "label": "Web Developer", 
     "email": "[email protected]", 
     "phone": "(123) 123-1234", 
     "website": "www.example.com", 
     "profiles": [{ 
      "network": "LinkedIn", 
      "url": "www.linkedin.com" 
     }] 
    } 
}; 

var greekedResume = JSON.parse(JSON.stringify(resume) 
    .replace(/:\s?\"(.*?)\"/g, ":\"Lorem ipsum\"")); 
相关问题