例如{a:{a1:1,a2:2},b:{b1:1,b2:2},c:{c1:1,c2:2}}转成下面这个样子:
{"a":{"a1":"1","a2":"2"},"b":{"b1":"1","b2":"2"},"c":{"c1":"1","c2":"2"}};如果原先键值用单引号的,把它换为双引号,去空格去换行如果有ActionScript版本的更好,我用的是ActionScript

解决方案 »

  1.   

    有一点疑惑,如果说之前是'a':'a"b"' 这样的怎么办呢?
      

  2.   

    yourhtml=yourhtml.replace(/['\s]?([^:{,'\s]+)['\s]?/g,"\"$1\"");
      

  3.   

    我的意思是在键和值外面双引号,如果加了单引号就把它变为双引号
    'a':'a"b"'变为"a":"a\"b\""4楼的大哥,好像有点错误,我把我的字符串代入的结果是下面这个样子的
    {"a":{"a1":"1","a2":"2}","b":{"b1":"1","b2":"2}","c":{"c1":"1","c2":"2}}"
      

  4.   

    恩。。修改一下:/['\s]?([^:{,'\s}]+)['\s]?/g
      

  5.   

    好强大如果原先有包含有引号改怎么处理呢?
    {a:{"a1":1,a2:2},b:{b1:1,b2:2},c:{c1:1,c2:2}}输出的是
    {"a":{""a1"":"1","a2":"2"},"b":{"b1":"1","b2":"2"},"c":{"c1":"1","c2":"2"}}a1那里多加了一层
      

  6.   

    /['\s]?([^:{,'\s"}]+)['\s]?(?=[:,$}])/g能不能一次性把需求说清楚完整呢
      

  7.   

    你在导入flash之前,后台代码在输出字符串前不能改为flash需求的相应的格式?让flash代码搞这个不是个好主意。
      

  8.   

    说实话,这一行正则是很变态的。var str = "{   '     a ':{ '    a1  '   :   '1',  'a2':'2'},   b :{b1:1,b2:2},c:{c1:1,c2:2 }}";alert(str.replace(/(\s|'|\s'|'\s)*([^\{\}\s\:\,']+)(\s|'|\s'|'\s)*(?=[\}\:\,])/g,"\"$2\""))最好两次replace:var str = "{   '     a ':{ '    a1  '   :   '1',  'a2':'2'},   b :{b1:1,b2:2},c:{c1:1,c2:2 }}";alert(str.replace(/[\s\r\n']*/g,"").replace(/[^\{\}\s:,]+(?=[\}:,])/g,"\"$&\""));或者:alert(str.replace(/[\s\r\n]/g,"").replace(/'?([^\{\}\s:,']+)'?(?=[\}:,])/g,"\"$1\""));但没有上面的清爽