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

好的,所以下面的示例将类存储在一个数组中,并将整个内容存储在一个映射中,其中键是类,内容是该键的值。

如果您想要使用正则表达式的解决方案,则需要 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 回答