如何用正则提取下面内容中的 a b c..........
data {
msg a;
msg b;
msg c;
}
上面的内容还有可能会有更多,如:
msg d;
msg e;
msg f;用正则提取出后并保存成json如:
['a','b','c']

解决方案 »

  1.   

    <script>
    var str = 'data { \
    msg a; \
    msg b; \
    msg c; \
    } \
    '
    var reg = /[a-z](?=;)/gi;
    var arr = str.match(reg);
    alert(arr?"['"+arr.join("','")+"']":'null');
    </script>
      

  2.   


    var str = 'data {\nmsg a;\nmsg b;\nmsg c;\n}',
    pattern = /\n?msg\s+([^;\n]+)\s*;/ig, msg, ret = [];
    while((msg = pattern.exec(str)) != null){
      ret.push(msg[1]);
    }
    alert("['" + ret.join("','") + "']");
      

  3.   

    <script>
    var str = 'data { \
    msg aa,a; \
    msg b; \
    msg c; \
    } \
    '
    var reg = /[a-z](?=;)/gi;
    var arr = str.match(reg);
    alert(arr?"['"+arr.join("','")+"']":'null');
    </script>只取最后一位了?
      

  4.   

    LZ试试我的把,1L估计是理解错了
      

  5.   

    window.onload = function() {
      var s = 'data { \
          msg a; \
          msg b; \
          msg c; \
          msg bb; \
          msg ccc; \
          msg kk123; \
          msg aadaf  ; \
          msg a12, b12 , c12 ; \
        }';
      var regex = /[_a-zA-Z$][_a-zA-Z0-9$]*(?= *[,;])/g;
      var result = s.match(regex);
      alert("['" + result.join("', '") + "']");
    }