JavaScript正则表达式帮助

Val*_*Val 2 javascript regex

我需要使用JavaScript拆分,但我在正则表达式中没用,所以我想做的是采用CSS结构的文本,例如:

var str = "selector {
  width: 100px;
  height: 20px;
}

.anything{
  margin: 5%;
}"; 

str.split(/regex goes here/);
Run Code Online (Sandbox Code Playgroud)

预期产出

[
  0 = selector{width: 100px; height: 20px;},
  1 = .anything{margin: 5%;}
]
Run Code Online (Sandbox Code Playgroud)

希望它不会太混乱,但请问是否有疑问.

谢谢.

Chr*_*nte 5

我不会为此分裂.相反,使用此正则表达式提取每个规则:

([\s\S]*?{[\s\S]+?})
Run Code Online (Sandbox Code Playgroud)

非常简单,但只要规则本身没有{和}字符就可以工作(我希望这种情况很少见).只要CSS在语法上有效,我的正则表达式就会忽略空格和换行符.我[\s\S]代替使用.因为.不符合换行符.

在您的情况下,要提取规则,它将是:

var myCSS = "CSS goes here";
var rules = myCSS.match(/([\s\S]*?{[\s\S]+?})/);
Run Code Online (Sandbox Code Playgroud)

编辑:

根据askers的要求,我修改了我的正则表达式以忽略选择器,例如:a {}.但是,它仍然会受到影响a { }.我将尝试为此找到解决方案,但同时您可能只需要处理每个规则并删除空规则.