将js中的对象格式字符串转换为json字符串

47 阅读1分钟

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, '');