[[{I:19, M:0, E:1, N:20, C:"8", R:1}, {I:1, M:0, E:1, N:10, C:1, R:1}, {I:3, M:0, E:1, N:10, C:1, R:1}, {I:2, M:0, E:1, N:10, C:1, R:1}, {I:25, M:1, E:1, N:10, C:3, R:1}, {I:26, M:1, E:1, N:10, C:3, R:1}], [{I:15, M:0, E:1, N:4, C:7, R:1}, {I:8, M:0, E:1, N:4, C:2, R:1}, {I:5, M:0, E:1, N:4, C:2, R:1}, {I:4, M:0, E:1, N:4, C:2, R:1}, {I:23, M:0, E:1, N:10, C:3, R:1}, {I:22, M:0, E:1, N:10, C:3, R:1}, {I:21, M:0, E:1, N:10, C:3, R:1}], [{I:16, M:0, E:1, N:4, C:7, R:1}, {I:9, M:0, E:1, N:10, C:1, R:1}, {I:7, M:0, E:1, N:4, C:2, R:1}, {I:6, M:0, E:1, N:4, C:2, R:1}, {I:28, M:0, E:1, N:10, C:3, R:1}, {I:27, M:0, E:1, N:10, C:3, R:1}, {I:24, M:0, E:1, N:10, C:3, R:1}], [{I:18, M:0, E:1, N:30, C:8, R:1}, {I:20, M:0, E:1, N:30, C:8, R:0}, {I:17, M:0, E:1, N:30, C:8, R:1}, {I:30, M:0, E:0, N:1, C:9, R:1}, {I:14, M:0, E:0, N:1, C:9, R:1}, {I:12, M:0, E:0, N:1, C:9, R:1}, {I:11, M:0, E:1, N:10, C:1, R:1}, {I:10, M:0, E:1, N:10, C:1, R:1}]]
有这样一个JSON串,我想查找I:28开头的这样一个元素,然后用正则匹配,替换C:3中的3,例如把{I:28, M:0, E:1, N:10, C:3, R:1}替换成{I:28, M:0, E:1, N:10, C:6, R:1},以I:28开头的这个元素,在这个JSON中的位置不是固定的,所以要查找以I:28为开头的,然后替换紧跟着他的这个C的值,C:的值只是数字类型的,希望大家帮忙,谢谢,大半夜的发帖不容易,顶我哦^_^

解决方案 »

  1.   


    <script>
    var str='[[{I:19, M:0, E:1, N:20, C:"8", R:1}, {I:1, M:0, E:1, N:10, C:1, R:1}, {I:3, M:0, E:1, N:10, C:1, R:1}, {I:2, M:0, E:1, N:10, C:1, R:1}, {I:25, M:1, E:1, N:10, C:3, R:1}, {I:26, M:1, E:1, N:10, C:3, R:1}], [{I:15, M:0, E:1, N:4, C:7, R:1}, {I:8, M:0, E:1, N:4, C:2, R:1}, {I:5, M:0, E:1, N:4, C:2, R:1}, {I:4, M:0, E:1, N:4, C:2, R:1}, {I:23, M:0, E:1, N:10, C:3, R:1}, {I:22, M:0, E:1, N:10, C:3, R:1}, {I:21, M:0, E:1, N:10, C:3, R:1}], [{I:16, M:0, E:1, N:4, C:7, R:1}, {I:9, M:0, E:1, N:10, C:1, R:1}, {I:7, M:0, E:1, N:4, C:2, R:1}, {I:6, M:0, E:1, N:4, C:2, R:1}, {I:28, M:0, E:1, N:10, C:3, R:1}, {I:27, M:0, E:1, N:10, C:3, R:1}, {I:24, M:0, E:1, N:10, C:3, R:1}], [{I:18, M:0, E:1, N:30, C:8, R:1}, {I:20, M:0, E:1, N:30, C:8, R:0}, {I:17, M:0, E:1, N:30, C:8, R:1}, {I:30, M:0, E:0, N:1, C:9, R:1}, {I:14, M:0, E:0, N:1, C:9, R:1}, {I:12, M:0, E:0, N:1, C:9, R:1}, {I:11, M:0, E:1, N:10, C:1, R:1}, {I:10, M:0, E:1, N:10, C:1, R:1}]]';
    var re=/I:28([^\}]*)C:([0-9]+)([^\}]*)/g;
    var Cstr='28';
    var rv = str.replace(re,"==============I:28$1 C:"+Cstr+"$3============");
    document.writeln(str+'<br /><br /><br /><br />');
    document.writeln(rv);
    </script>
    为了看清楚,加了 ========
    自己删除
    $1 代表 I:28([^\}]*)中的()里面的内容即:', M:0, E:1, N:10,'
    $2 代表 C:([0-9]+) 中()里面的内容,即:'3'
    $3 代表 ([^\}]*)中()里面的内容,即:', R:1'
      

  2.   

    try...<script type="text/javascript"> 
        var test = "[[{I:19, M:0, E:1, N:20, C:\"8\", R:1}, {I:1, M:0, E:1, N:10, C:1, R:1}, {I:3, M:0, E:1, N:10, C:1, R:1}, {I:2, M:0, E:1, N:10, C:1, R:1}, {I:25, M:1, E:1, N:10, C:3, R:1}, {I:26, M:1, E:1, N:10, C:3, R:1}], [{I:15, M:0, E:1, N:4, C:7, R:1}, {I:8, M:0, E:1, N:4, C:2, R:1}, {I:5, M:0, E:1, N:4, C:2, R:1}, {I:4, M:0, E:1, N:4, C:2, R:1}, {I:23, M:0, E:1, N:10, C:3, R:1}, {I:22, M:0, E:1, N:10, C:3, R:1}, {I:21, M:0, E:1, N:10, C:3, R:1}], [{I:16, M:0, E:1, N:4, C:7, R:1}, {I:9, M:0, E:1, N:10, C:1, R:1}, {I:7, M:0, E:1, N:4, C:2, R:1}, {I:6, M:0, E:1, N:4, C:2, R:1}, {I:28, M:0, E:1, N:10, C:3, R:1}, {I:27, M:0, E:1, N:10, C:3, R:1}, {I:24, M:0, E:1, N:10, C:3, R:1}], [{I:18, M:0, E:1, N:30, C:8, R:1}, {I:20, M:0, E:1, N:30, C:8, R:0}, {I:17, M:0, E:1, N:30, C:8, R:1}, {I:30, M:0, E:0, N:1, C:9, R:1}, {I:14, M:0, E:0, N:1, C:9, R:1}, {I:12, M:0, E:0, N:1, C:9, R:1}, {I:11, M:0, E:1, N:10, C:1, R:1}, {I:10, M:0, E:1, N:10, C:1, R:1}]]";
        var reg = /({I:28\b[^C]*)C:\d+/ig;
        var result = test.replace(reg, "$1C:6");
        document.write(result);
    </script>