js中的对象声明如下,其中键没有双引号,值里面可能出现单引号包裹、注释、以及一些非json可识别值。
let str = `{
msg: {
value: 100
},
msg2: {
value: '你好'
}
}`
可以使用以下正则进行替换即可:
let newStr = str
// 给键添加双引号
.replace(/(\w+)\s*:/g, '"$1":')
// 替换单引号为双引号包括中文字符等
.replace(/:\s*'([\w\u4e00-\u9fa5]*)'/g, ': "$1"')
// 给没有引号的值添加双引号,json识别的数字、bool和null除外
.replace(/:\s*(\w+)(?<![\d+,null,true,false])/g, ': "$1"')
// 移除注释行
.replace(/((?!\n)\s*\/\/.*)/g, '');