在字符串化的JSON对象值中添加引号

时间:2018-11-16 03:55:57

标签: javascript regex replace

我的字符串化对象数据没有在对象值两边加上引号,而在尝试JSON.parse()时会出错:

'{ "affiliation": CORPORATE, "userId": 75c35d1c-5d12-4485-8fa8-b2f1551a3e6e }'

我需要字符串为:

'{ "affiliation": "CORPORATE", "userId": "75c35d1c-5d12-4485-8fa8-b2f1551a3e6e" }'

我正在使用此正则表达式为对象键添加引号:

var newStr = str.replace(/(['"])?([a-z0-9A-Z_]+)(['"])?:/g, '"$2": ');

例如:     '{ affiliation: CORPORATE }''{ "affiliation": CORPORATE }'

我的数据中只有字符串值,因此我不需要检查值类型。我该如何更改我的正则表达式,以便也将引号添加到对象值?

1 个答案:

答案 0 :(得分:2)

您可以使用以下正则表达式:

/[ ](?=\b)|\b(?=,|[ ])/g

它开始匹配一个空格,并使用Word boundary的前瞻性。然后,它对Word boundary使用交替符,后跟commaSpace

它使用'global'标志来匹配所有内容。

然后,将匹配项替换为double quote