在javascript中空间失败后的负面前瞻

时间:2017-02-17 12:40:28

标签: javascript regex

我试图删除所有不包含$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

我错过了什么?

1 个答案:

答案 0 :(得分:0)

您可以在(?!.*\$c_)之后使用(?![\w\s]*\$c_):之类的否定前瞻:

/[-a-z]+:(?!.*\$c_)[\s\w]*[^{;]+;/ig

请参阅regex demo

这样,$c_之后:失败的所有匹配都会失败(即不会返回匹配项)。

请注意,\w已匹配数字,因此,[\w\d]可以安全地缩减为\w

我还认为添加i不区分大小写的修饰符会使它更安全一点,因为[a-z]也会匹配大写的ASCII字母。