匹配结束CSS大括号,当它结束时没有分号

时间:2014-11-18 00:16:12

标签: css regex

如何匹配前面没有分号的结束CSS大括号}?请参阅以下案例中的示例:

这应匹配:

.style { margin: 0px; width: 10px }
.style {
   margin: 0px;
   width: 10px
}

但不是这个:

.style { margin: 0px; width: 10px; }
.style { margin: 0px; width: 10px;}
.style {
   margin: 0px;
   width: 10px;
}

我正在尝试使用此功能,但看起来使用否定匹配存在一些问题:

string.match(/[^;](!?\s+)?(})/mg)

1 个答案:

答案 0 :(得分:1)

假设JavaScript。这会添加缺少的分号:

s.replace(/([^{};\s])(\s*})/g, "$1;$2")

我在第一个字符类中包含{},因为可能存在空规则:

.foo {}

该模式捕获大括号前的最后一个非空白字符,因为JavaScript不支持后视。由于我已经捕获了角色,我也抓住了右大括号,而不是使用前瞻。