0

CSS を取得して var に保存しますが、正規表現を使用してクラスを解析しようとしています。それは簡単な部分ですが、中括弧の間の内容をスクレイピングして保存する正規表現に問題があるようです。

私の試みは: http://jsfiddle.net/2qaCY/

私が望むのは、クラスを繰り返しループし、中括弧の間の内容をこすり落とすことだけです。

フィドルのコード:

var css = ".Winning{color: #24CCFF;background-color: #FF8091;}.Losing{color: #2EFFCE;background-color: #DB4DFF;}.crayons{font-family: papyrus;font-size: 32pt;}";

var reg = /\.[a-zA-Z0-9]*\{/ig;
var matches = css.match(reg);
for (var m in matches) {
    var sClass = matches[m].substr(0, matches[m].length - 1);
    $("body").append(sClass + "<br />");
    var c = new RegExp("\\." + sClass + "[\\n\\s]*\{[\\s\\n.]*\}", "ig");
    var out = c.exec(css);
    $("body").append(out);
    $("body").append("<br /><br />");
}
4

1 に答える 1

1

次の例では、クラスを配列に格納し、全体をキーがクラスで内容がそのキーの値であるマップに格納します。

regexp を使用したソリューションが必要な場合は、さらに 10 分かかりますが、これがあなたが望むものだと私は信じています。

http://jsfiddle.net/2qaCY/11/

var css = ".Winning{color: #24CCFF;background-color: #FF8091;}.Losing{color: #2EFFCE;background-color: #DB4DFF;}.crayons{font-family: papyrus;font-size: 32pt;}";

var reg = /\.[a-zA-Z0-9]*\{[a-zA-Z0-9:\- #;]+\}/ig;
var matches = css.match(reg);
var classes = []
var classMap = {}

matches.map(function(item) {
    var cl = (item.split("{")[0])
    classes.push(cl)
    classMap[cl] = item.split("{")[1].split("}")[0]            
})

// All the classes in an array
console.log(classes);
console.log(classMap);
于 2013-09-12T18:39:28.143 に答える