正则expression式parsingCSS @media查询(和其他嵌套select器)

我正在使用正则expression式来parsingCSS文件的节点脚本,它完美的作品…除了处理@media查询。 问题是由于嵌套的花括号,这给我适合。 我基本上想创build一个媒体查询中的所有内容的捕获组:这是我到目前为止。

@media[^{]+\{([^}]+)}\s*}

这工作很好,就像这样简单:

 @media (max-width: 868px) { aside .size-toggle { display: none; } } 

但不能拿起多个嵌套的规则,像这样:

 @media (max-width: 767px) { #wrapper.sidebar-display aside { left: 0; transition: all 0.5s ease; -webkit-transition: all 0.5s ease; -moz-transition: all 0.5s ease; -ms-transition: all 0.5s ease; -o-transition: all 0.5s ease; } #wrapper.sidebar-display #top-nav { left: 0; right: -194px; } } 

我如何修改我的正则expression式,以便捕获组包含每个单独的@media查询中的所有select器和规则?

试试这个正则expression式:

 /@media[^{]+\{([\s\S]+?})\s*}/g 

演示

http://regex101.com/r/iT2eR5