2016-06-07 28 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\"")); 
相關問題