解析 CSS 的 Javascript 正则表达式

标签 javascript css arrays regex

我有这样的 CSS 片段

.is-error{
  color: #d8000c;
}
.is-success{
  color: #4f8a10;
}

我想用 javascript 中的正则表达式解析它,以便我得到一个数组,其中包含类名和相应的属性。

我写的正则表达式:/^(?:([\w.\-\>\~\_\s\^\'\"\=\#\*\[\]\:\,\+]+)\{(.*)\})$/

给我输出:

array[1] = .is-error
array[2] = color: #d8000c;}.is-success{color: #4f8a10

期望的输出:

array[1] = .is-error
array[2] = color: #d8000c;
array[3] = .is-success
array[4] = color: #d8000c;

最佳答案

不要尝试用复杂的正则表达式匹配它。但是,拆分 使用一个不太复杂的。

对于拆分,我们可以使用 String.split 并将正则表达式 /[{}/ 传递给它,然后我们使用 Array.map trim 字符串以便仅获取内容并删除空白。但在此之前,我们将使用 Array.filter

删除不需要的空字符串
var arr = str.split(/[{}]/).filter(String).map(function(str){
    return str.trim(); 
});

如果 CSS 是有效的,它还具有适用于所有 css 规则而不仅仅是类的优势。

关于解析 CSS 的 Javascript 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29273550/

相关文章:

JavaScript 以漂亮的格式保存 JSON 响应到其他文件扩展名

javascript - jQuery mouseenter() 没有触发

html - 标题和图像未与 ul 列表对齐?

html - 右对齐单元格表格中的文本,但向右添加 'variable' 填充以从表格边框创建空间

python - 接收 "ValueError: setting an array element with a sequence."

javascript - 将鼠标悬停时的文本添加到链接、添加过滤和缩放

javascript - 无法读取未定义的属性 'router'并且ko未在knockout JS中定义

jquery - 如何向 CSS 表格添加带有表格标题的新表格行和列

javascript - 如何使用 Javascript 中的 reduce 函数获取数字数组并返回最大和最小数字

c - 在 mcu 上的 malloc 之后需要一个 free()(即使数组/指针总是在使用中)?