我需要使用 JavaScript split,但我对正则表达式没用,所以我想做的是采用类似于 CSS 结构的文本,例如:
var str = "selector {
width: 100px;
height: 20px;
}
.anything{
margin: 5%;
}";
str.split(/regex goes here/);
预期输出
[
0 = selector{width: 100px; height: 20px;},
1 = .anything{margin: 5%;}
]
希望这不会太令人困惑,但如有疑问,请询问。
谢谢。
最佳答案
我不会为此使用拆分。相反,使用此正则表达式来提取每个规则:
([\s\S]*?{[\s\S]+?})
非常简单,但只要规则本身没有 { 和 } 字符就应该可以工作(我预计这种情况很少见)。只要 CSS 在语法上有效,我的正则表达式就会忽略空格和换行符。我使用 [\s\S]
代替 .
,因为 .
与换行符不匹配。
在您的情况下,提取规则将是:
var myCSS = "CSS goes here";
var rules = myCSS.match(/([\s\S]*?{[\s\S]+?})/);
编辑:
根据询问者的请求,我修改了我的正则表达式以忽略选择器,例如:a {}
。但是,它仍然会捕获 a { }
。我将尝试找到解决方案,但同时您可能只需要处理每个规则并删除空规则。
关于JavaScript 正则表达式帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3327581/