body { background-color:#CCC; color:#000;}a{color:#FF0;}.xxx { background-color:#060}
CSS代码如上,无视换行,假设是一行。
如何匹配body { background-color:#CCC; color:#000;}里的color:#000;
CSS里的属性也许并不只是这几个,还有更多。

解决方案 »

  1.   

    /{[^{]*background-color:#CCC;[^{]*color:#000;[^{]*}/
      

  2.   


    <script>
    var str = "div{color:yellow;}body { background-color:#CCC; color:#000;}a{color:#FF0;}.xxx { background-color:#060}";
    var req = /body\s*\{[^{}]*(color:[^;]+)[^{}]*\}/i;
    alert(str.match(req)[1]);
    </script>
      

  3.   

    但是没有考虑到
    会匹配background-color:#CCC里的color
      

  4.   

    改了一下,但是改得自己看着都晕
    var str = "......";
    var req = /body\s*(({[^{}]*(\s|;))|({))(color:[^;]+)[^{}]*\}/i;
    var array = str.match(req);
    alert(array[array.length - 1]);基本满足要求了本来想用(?<!exp),但报JS错误,郁闷了,就用了上面的方法
      

  5.   

    <script>
    var str="body {  background-color:#CCC; color : #000; }";
    var re=/^.*(?!-)color[\s]*:[\s]*([^;]+);.*$/gi;
    alert(re.test(str));//true
    alert(RegExp.$1);//#000
    </script>
      

  6.   

    前面没看清
    <script>
    var str="body { background-color:#CCC; color : #000; }.xxx { background-color:#060}";
    var re=/^.*body[\s]*{[^{]*(?!-)color[\s]*:[\s]*([^;]+);.+$/gi;
    alert(re.test(str));//true
    alert(RegExp.$1);//#000
    </script>
      

  7.   

    后面没分号改成这样:var re=/^.*body[\s]*{[^{]*(?!-)color[\s]*:[\s]*([^;]+).*$/gi;
      

  8.   

    var str = "div{color:yellow;}body { background-color: #CCC ; color: #000 ;}a{color:#FF0;}.xxx { background-color:#060}";
    var oReg=/body\s*\{.*?color:\s*(.*?)\s*;.*?\}/i;
    alert(str.match(oReg)[1]);
      

  9.   

    分两步做比较简单一些
    var str = "div{color:yellow;}body { background-color:#CCC ; color:#000}a{color:#FF0;}.xxx { background-color:#060}";
    var oRegContent=/body\s*\{(.*?.)\}/i;
    var oRegColor=/(^|;)\s*color:\s*(.*?)\s*(;|$)/i;
    alert(str.match(oRegContent)[1].match(oRegColor)[2]);
      

  10.   


    var str = "div{\n\tcolor:yellow;\n}\nbody{\n\tbackground-color:#CCC;\n\tcolor:#000;\n}\na{\n\tcolor:#FF0;\n}\n.xxx {\n\tbackground-color:#060\n}";
    var re = /body\s*\{[^}]*?[^-]\bcolor:([^;}\s]+)[^}]*\}/ig;
    while(re.exec(str))
        alert(RegExp.$1);