我试图删除所有不包含$c_
变量的sCss属性。只要$c_
之前没有字符,它就能正常工作。
我有以下正则表达式:[\-a-z]+:[\s\w\d]*(?!\$c_)[^{;]+;
应保留前7个属性,其余部分删除。
svg{
.fill{fill:$c_mainColorDark;}
.fill{fill: $c_mainColorDark;}
color:$c_red;
color: $c_red;
border:$c_red;
border:1px solid $c_red;
border: 1px solid $c_red;
height:em(16);
margin-right: 10px;}
示例:https://regex101.com/r/1cGPar/1
我错过了什么?
答案 0 :(得分:0)
您可以在(?!.*\$c_)
之后使用(?![\w\s]*\$c_)
或:
之类的否定前瞻:
/[-a-z]+:(?!.*\$c_)[\s\w]*[^{;]+;/ig
请参阅regex demo
这样,$c_
之后:
失败的所有匹配都会失败(即不会返回匹配项)。
请注意,\w
已匹配数字,因此,[\w\d]
可以安全地缩减为\w
。
我还认为添加i
不区分大小写的修饰符会使它更安全一点,因为[a-z]
也会匹配大写的ASCII字母。