2017-04-05 57 views
0

我有一個像子串並轉換成JSON對象節點JS

這{馬尼什} {ABC} {123}的字符串是我的字符串CopyResult = {地區:美國西-2,AmiId :AMI-0f60f66f},{地區:美國西-1,AmiId:AMI-2884de48},馬尼什·庫馬爾

我想要得到的子串狀

{ Region : us-west-2, AmiId : ami-0f60f66f},{ Region : us-west-1, AmiId : ami-2884de48} 

得到我之後想要將該字符串轉換爲JSON。

我想這樣的代碼

var pt = /CopyResult=.*/; 
var copyAmisResult = copyAmilog.match(pt); 
console.log("copyAmilog -- " + copyAmisResult); 

輸出

CopyResult = {地區:美國西-2,AmiId:AMI-0f60f66f},{地區:美國西1, AmiId:ami-2884de48},

請問有人能給我推薦修改過的正則表達式,以便我可以得到我的輸出結果。

PS: - 我需要從字符串的開頭刪除CopyResult=,並從最後一個字符串中刪除,,也可以有多個{}。之後有一種更簡單的方法將該字符串轉換爲JSON對象。 JSON.parse()可以用嗎?

+1

我不好用正則表達式,但JSON.parse()來,一旦你得到的字符串將是有用的'JSON.parse( '[' +「{ 「一」:1} ,{「two」:2},{「three」:3}'+']');'只注意到你的變量名和值沒有用引號包裹,也需要這樣做。 – IrkenInvader

+1

你應該告訴你的服務器返回適當的JSON而不是做這個黑客工作。 – Joseph

+0

@JosephtheDreamer在我的情況下,很難獲得JSON結果。所以我沒有選擇。 –

回答

1

您可以使用此正則表達式來得到你想要的字符串,但我不知道如何將它轉換爲對象

var str = "This {manish } {abc} {123 } is my stringCopyResult={ Region : us-west-2, AmiId : ami-0f60f66f},{ Region : us-west-1, AmiId : ami-2884de48}, manish kumar"; 
 
console.log(str.match(/=\s*({.*})/)[1]);

+0

如果多個{}存在,該怎麼辦?我更新了我的問題。 –

+0

str.match(/ stringCopyResult = {。*} /)[0] .slice(「stringCopyResult =」。length)你可以使用這個權限嗎? –

+0

我已經更新它以匹配它之前的「=」,但是如果出現「= {」,那麼它將會失敗,您不想捕獲它。你應該明確指出你想如何捕獲以獲得正確的正則表達式。 –

0

你可以得到數據如下。

var copyAmilog = 'This {manish } {abc} {123 } is my stringCopyResult={ Region : us-west-2, AmiId : ami-0f60f66f},{ Region : us-west-1, AmiId : ami-2884de48}, manish kumar' 
 
var pt = /stringCopyResult=(.*),/; 
 
var copyAmisResult = copyAmilog.match(pt); 
 
console.log("copyAmilog -- " , copyAmisResult[1]);